Python

Werbung
Python
V ti f
Vertiefungsmodul
d lP
Programmiersprachen
i
h
Name: Philipp Riemer
Hier Logo oder Name (Schriftart
Meta, Schriftgröße 15Pkt) bündig
mit dem Claim positionieren
WIRTSCHAFTS
INFORMATIK
P th
Python
Agenda
d
Name: Philipp Riemer
05.06.2009
2
P th
Python
Einleitung
i l i
Name: Philipp Riemer
05.06.2009
3
P th
Python
i Language off the
h Year 2008
Programming
Sonst.
Sonst
Ruby
Python
yt
Perl
Java
C++
C
PHP
Name: Philipp Riemer
05.06.2009
N = 886
Linuxquestions.org
4
P th
Python
Python
h im
i Einsatz
i
Name: Philipp Riemer
05.06.2009
5
P th
Python
i
i
Historie
entstand 1989 am CWI in Amsterdam
Administration eines verteilten OS
Erfinder:
E fi d Guido
G id van Rossum
R
N
Namensgeber:
b Monty
M t Python
P th
V bild ABC ((auch
h vom CWI)
Vorbild:
Name: Philipp Riemer
05.06.2009
6
P th
Python
Versionen
i
Name: Philipp Riemer
CPython
Jython
IronPython
PyPy
05.06.2009
7
P th
Python
Sprachbesonderheiten
hb
d h i
kaum Klammern
zwingende
wingende Einrückungen
i t
interpretiert
ti t / JIT-Compilierung
JIT C
ili
möglich
ö li h
d
dynamisch
i h erweiterbar
it b
möglichst
ö li h t einfache
i f h S
Sprache
h
Name: Philipp Riemer
05.06.2009
8
P th
Python
Datentypen
Object
None
int,float,long
list
functions
Boolean
complex
tuple
classes
str, unicode
set
modules
dict
exceptions
type
Quelle: Microsoft
Name: Philipp Riemer
05.06.2009
9
P th
Python
Standardbibliothek
d dbibli h k
unteranderem bereits mit:
mit
• GUI
• reguläre Ausdrücke
• Nebenläufigkeit
g
• Kryptographie
• Multimediacodecs
M lti di
d
• Internetprotokolle
• Unittests & Logging
Name: Philipp Riemer
Python comes with batteries included
05.06.2009
10
P th
Python
Codedesign
d d i
Name: Philipp Riemer
05.06.2009
11
P th
Python
Fehlerbehandlung
hl b h dl
analog
l zu z.B.
B Java
J
f open(“save log” “r”)
f = open(“save.log”,
Besonderheit: else
try:
kürzer mit with
with open(”save.log”, “r”) as f:
print f.read()
Name: Philipp Riemer
print f.read()
i t f
d()
except IOError:
print “Datei nicht lesbar”
fi ll
finally:
f.close()
05.06.2009
12
P th
Python
Funktionen/
ki
/ Prozeduren
d
Schlüsselwort def
Schlüsselwort:
verschachtelte Funktionen und
Closures möglich
anonyme Funktionen
(Lambda-Ausdrücke)
Name: Philipp Riemer
def binom(n, k):
def binom(n
k):
def fac(n):
if n == 0:
return 1
else:
return n * fac(n‐1)
return fac(n) / t
f ( ) / (fac(n‐k)*fac(k))
>>> f = lambda x,y: (x+y)**2
>>> f(3,2)
25
05.06.2009
13
P th
Python
Klassen
l
Schlüsselwort class
Schlüsselwort:
class Filter():
def __init__(self):
self.blocked = []
def filter(self seq):
def filter(self, seq):
return [x for x in seq if x not in self.blocked]
Magic Methods
explizite Objektreferenz
(meist self genannt)
(Mehrfach-) Vererbung möglich
Name: Philipp Riemer
05.06.2009
class SPAMFilter(Filter):
def __init__(self):
self.blocked = [‘SPAM’]
lf bl k d [‘SPAM’]
14
P th
Python
Ducktyping
k i
Idee aufgrund eines Gedichtes
EAFP vs. LBYL
for duck in ducks:
try:
duck.quak()
except AttributeError :
print ’kann nicht quaken:’,
duck
kann nicht quaken: Maus Jerry
Ente Donald: quak
Frosch Fridolin: quaaak
kann nicht quaken: <object object at 0xb7d72460>
Name: Philipp Riemer
05.06.2009
15
P th
Python
Erweiterbarkeit
i b k i
Name: Philipp Riemer
05.06.2009
16
P th
Python
Module
d l
i Python
in
P th (oder
( d C,
C C++,
C
F t )
Fortran)
meist: 1 Datei = 1 Modul
sonst: Packages
Funktionen & neue
Programmierparadigmen
keine Header-Dateien notwendig
nativer Zugriff auf Code in
C,C++ oder Fortran
Name: Philipp Riemer
05.06.2009
17
P th
Python
Zugriff
iff
eigene
i
N
Namensräume
sä
je
j Modul
M d l
diskret
import math
ohne Präfix
from math import sin
komplett (ohne Präfix)
from math import *
mit
i Ali
Alias
f
from math import pi as Zahl_PI
th i
t i Z hl PI
Name: Philipp Riemer
05.06.2009
18
P th
Python
Sichtbarkeiten
i hb k i
public
bli
a = 17
protected
_b = 23
private
__c = 42
Properties
p
möglich
g
d = p
property([fget[, fset
p
y([ g [,
[, fdel[, docstr]]]])
Name: Philipp Riemer
05.06.2009
19
P th
Python
Beispiel
i i l
Name: Philipp Riemer
05.06.2009
20
P th
Python
def solve(s):
"""Find solutions to alphametic equations
>>> solve("SEND + MORE == MONEY")
9567 + 1085 == 10652
"""
Generische Lösung
alphametischer
p
Rätsel
mit Python
from re import findall
from string import maketrans
from itertools import permutations
words = findall('[A‐Za‐z]+', s)
chars = set(''.join(words))
chars = set(
join(words))
assert len(chars) <= 10
firsts = set(w[0] for w in words)
chars = ''.join(firsts) + ''.join(chars ‐ firsts)
n = len(firsts)
f for perm in permutations('0123456789', len(chars)):
i t ti
('0123456789' l ( h
))
if '0' not in perm[:n]:
trans = maketrans(chars, ''.join(perm))
equation = s.translate(trans)
if eval(equation):
return equation
for alphametic in [
'SEND + MORE == MONEY',
'SEND + A + TAD + MORE == MONEY',
SEND A TAD MORE MONEY ,
'I + GUESS + THE + TRUTH == HURTS',
]:
print alphametic
print solve(alphametic)
Name: Philipp Riemer
05.06.2009
21
P th
Python
Agenda
d
Name: Philipp Riemer
05.06.2009
22
P th
Python
Name: Philipp Riemer
05.06.2009
23
Herunterladen