Proseminar Einführung in Python

Werbung
Proseminar
Einführung in Python
von David Voigt
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 1 von 44
Inhalt
1. Grundlegende Konzepte
2. Datentypen
a)
b)
c)
d)
3.
4.
5.
6.
7.
NoneType
Numerische Datentypen
sequentielle Datentypen
Mengen
Kontrollstrukturen
Ausnahmebehandlung
Built-in Funktionen
Module und Pakete
Weitere Spracheigenschaften
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 2 von 44
1. Grundlegende Konzepte
• Imperative Programmiersprache, welche
weitere Programmierparadigmen vereint
• Interpretierte Programmiersprache
• Ausführung auf allen Plattformen möglich
• Möglichkeit der einfachen Erweiterung der
Standardbibliothek von Python
• PSF-Lizenz (erlaubt es den Python-Interpreter
lizenzkostenfrei in kommerzielle Anwendungen
einzubetten)
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 3 von 44
2. Datentypen
1. NoneType
– Leerer Datentyp, einzige Instanz ist die Konstante
None
– mögliche Operationen:
•
Prüfen auf None:
var = None
if var is None:
print(„var ist None“)
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 4 von 44
2. Datentypen
2. Numerische Datentypen




ganze Zahlen (int und long)
Gleitkommazahlen (float)
Boolesche Werte (bool)
Komplexe Zahlen (complex)
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 5 von 44
2. Datentypen
Operationen auf numerischen Datentypen
Operation
Kurzschreibweise
Vergleichsoperationen
x=x+y
x += y
x == y
x=x–y
x -= y
x != y
x=x*y
x *= y
x<y
x=x/y
x /= y
x <= y
x=x%y
x %= y
x>y
x = +x
x >= y
x = -x
x = x ** y
x **= y
x = x // y
x //= y
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 6 von 44
2. Datentypen
spezielle Operationen für ganzzahlige Typen
Operator
Kurzschreibweise
Bedeutung
x=x&y
x &= y
Bitweise UND von x und y
x=x|y
x |= y
Bitweise OR von x und y
x=x^y
x ^= y
Bitweise XOR von x und y
x = ~x
Bitweise Komplement von x
x = x << n
x <<= n
Bitverschiebung um n Stellen nach links
x = x >> n
x >>= n
Bitverschiebung um n Stellen nach rechts
Beispiele:
0 1 1 0 1 1 0 1 109
0 1 1 0 1 1 0 1 109
& 1 0 1 1 0 1 0 1 181
| 1 0 1 1 0 1 0 1 181
0 0 1 0 0 1 0 1 37
1 1 1 1 1 1 0 1 253
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 7 von 44
2. Datentypen
booleschen Werten
Operationen: not x, x and y, x or y
Wahrheitswerte bei anderen Datentypen:
Basisdatentyp
False-Wert
True-Wert
NoneType
None
-
int, long
0
alle Zahlen außer 0
float
0.0
alle Zahlen außer 0
complex
0 + 0j
alle Zahlen außer 0
str
„“
jeder nicht leere String
list
[]
jede nicht leere Liste
tuple
()
jedes nicht leere Tupel
dict
{}
jedes nicht leere Dictionary
set, frozenset
set(), frozenset()
jede nicht leere Menge
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 8 von 44
2. Datentypen
komplexen Zahlen
Darstellung: x + yj (Beispiel: 3 + 4j)
Methoden und Attribute:
Methoden und Attribute
Rückgabewert
x.real
liefert den Realteil von x
x.imag
liefer den Imaginärteil von x
x.conjugate()
liefert die zu x konjugiert
komplexe Zahl
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 9 von 44
2. Datentypen
3. sequentielle Datentypen
– Strings (str, unicode)
– Listen (list)
– unveränderliche Listen (tuple)
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 10 von 44
2. Datentypen
Operationen sequenzieller Datentypen
Operation
Erklärung
s in x
prüft, ob s in x ist (liefert Wahrheitswert)
s not in x
prüft, ob s nicht in x ist (liefert Wahrheitswert)
x + y (x += y)
Verkettung von x und y (Verkettung von x und y wird x zugewiesen)
x * n oder n * x
(x *= n)
Verkettung, welche n Kopien von x enthält
(Verkettung, welche n Kopien von x enthält wird x zugewiesen)
x[n]
liefert das n-te Element von x
x[n:m]
liefert eine Sequenz mit den Elementen von n bis m
x[n:m:k]
liefert eine Sequenz mit den Elementen von n bis m, wobei nur jedes kte Element beachtet wird
len(x)
gibt die Anzahl der Elemente von x zurück
min(x)
gibt das kleinste Element zurück, sofern eine Ordnungsreleation def. ist
max(x)
gibt das größte Element zurück, sofern eine Ordnungsrelation def. ist
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 11 von 44
2. Datentypen
einen String erzeugen und Escape-Sequenzen
str1=„…“
str2=‚…‘
str3=„„„zeile1
zeile2“““
str4=(„zeile1“
„zeile2“)
Escape-Sequenz
Erklärung
\a
erzeugt Signalton
\b
Backspace
\f
Seitenvorschub
\n
Linefeed
\r
Carriage Return
\t
horizontaler Tab
\v
vertikaler Tab
\“
Doppeltes Hochkomma (erscheint als Zeichen)
\\‘
Einfaches Hochkomma (erscheint als Zeichen)
\\
Backslash (erscheint als Zeichen)
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 12 von 44
2. Datentypen
Methoden zum Trennen von Strings
Methode
Erklärung
s.split([sep[, maxsplit]])
zerteilt einen String anhand des im Parameter sep angegebene
Zeichen und gibt eine Liste zurück (der Parameter maxsplit
kann die Anzahl der Teilungen begrenzen)
s.rsplit([sep[, maxsplit]])
macht das selbe wie die Funktion split, nur das rsplit am Ende
des String mit dem Teilen beginnt
s.splitlines([keepends])
Gibt eine Liste mit den Zeilen des String zurück (Um
Zeilenvorschübe am Ende zu erhalten ist der Parameter
keepends auf True zu setzen)
s.partition(sep)
Der String wird in drei Teile geteilt, welche in einem Tupel
zurück gegeben werden. Der erste Teil ist die Zeichenkette vor
dem String sep, der zweite Teil ist der String sep und der dritt
Teil ist der hinter dem String sep.
s.rpartition(sep)
macht das selbe wie die Funktion partition, nur das rpartition
am Ende des String beginnt
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 13 von 44
2. Datentypen
Methoden zum Suchen in Strings
Methode
Erklärung
s.find(sub[, start[, end]])
Es wird der Index der erstem Vorkommen von sub in s
zurück geben (falls sub nicht in s vorkommt wird -1
zurück gegeben).
s.rfind(sub[, start[, end]])
Macht das selbe wir find, nur das die Suche am Ende des
Strings begonnen wird.
s.index(sub[, start[, end]])
Macht das selbe wie find, nur das hier im Fehlerfall eine
ValueError Exception geworfen wird.
s.rindex(sub[, start[, end]])
Macht das selbe wie rfind, nur das hier im Fehlerfall eine
ValueError Exception geworfen wird.
s.count(sub[, start[, end]])
Zählt die Anzahl der Vorkommen von sub in s
Die optionalen Parameter start und end dienen dazu,
den Suchbereich im String einzugrenzen
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 14 von 44
2. Datentypen
Methoden zum Ersetzen von Teilstrings
Methode
Erklärung
s.replace(old, new[, count])
Rückgabe eines Strings, indem alle Vorkommen von old
durch new ersetzt wurden (durch count kann die Anzahl der
Ersetzungen begrenzt werden)
s.lower()
Rückgabe eines Strings, indem nur Kleinbuchstaben sind
s.upper()
Rückgabe eines Strings, indem nur Großbuchstaben sind
s.swapcase()
Rückgabe eines Strings, indem die Großbuchstaben nun
klein sind und die Kleinbuchstaben nun groß sind
s.capitalize()
Rückgabe eines Strings, indem der erste Buchstabe ein
Großbuchstabe ist
s.title()
Rückgabe eines Strings, indem jeweils alle Wörter mit
einem Großbuchstaben beginnen
s.expandtabs([tabsize])
Rückgabe eines Strings, indem alle Tabulatoren durch
Leerzeichen ersetzt wurden (optional kann durch tabsize die
Anzahl der Leerzeichen angegeben werden)
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 15 von 44
2. Datentypen
Beispiele zu den gezeigten Methoden
str1 = „a,b,c,d,e,f,g“
str1.split(„,“)
#[a,b,c,d,e,f,g]
str1 = „a,b,c,d,e,f,g“
str1.count(„,“)
#6
str1 = „www.google.de“
str1.partition(„.“)
#(„www“,“.“,“google.de“)
str1.rpartition(„.“)
#(„www.google“,“.“,“de“)
str1 = „a,b,c,d,e,f,g“
str1.replace(„,“,“.“)
# „a.b.c.d.e.f.g“
str1 = „a,b,c,d,e,f,g“
str1.find(„c“)
#4
str1 = „a,b,c,d,e,f,g“
str1.upper()
# „A,B,C,D,E,F,G“
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 16 von 44
2. Datentypen
Formatierung von Strings
„…%...X…%...Y…“ % (Wert1,Wert2)
Kennung Erklärung
Kennung Erklärung
d
Ganzzahl mit Vorzeichen
f
i
siehe d
Fließkommazahl in
Dezimalschreibweise
o
Oktalzahl ohne Vorzeichen
F
siehe f
u
Ganzzahl ohne Vorzeichen
g
Fließkommazahl in wissenschaftl.
Schreibweise, wenn Exponent < -4
x
Hexadezimalzahl ohne Vorzeichen
G
siehe g
X
siehe x
c
Zeichen (Länge 1)
e
Fließkommazahl in wissenschaftl.
Format (kleines „e“)
r
String (durch Methode repr)
E
Fließkommazahl in wissenschaftl.
Format (großes „e“)
s
String (durch Methode str)
%
Ausgabe des Prozentzeichen
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 17 von 44
2. Datentypen
Umwandlungsflags
Flag
Erklärung
#
Ausgabe im alternativen Modus
0
Bei einer Unterschreitung der Mindestlänge bei numerischen
Werten wird mit Nullen aufgefüllt
-
Bei Unterschreitung wird von rechts aufgefüllt
(Leerzeichen)
Bei numerischen Werten, welche positiv sind, wird ein
Leerzeichen davor geschrieben
+
Bei numerischen Werten wird das Vorzeichen immer angegeben
str = „Preis: %5.2f EUR“ %(8.443)
#Preis: 8.44 EUR
str = „Preis: %06d EUR“ %(28)
#Preis: 000028 EUR
str = „Preis: %+5.2f EUR“ %(8.443)
#Preis: +8.44 EUR
str = „Preis: %-6d EUR“ %(28)
#Preis: 28 EUR
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 18 von 44
2. Datentypen
Operationen für den Datentyp list
Operator
Erklärung
l[n] = x
Das Element von l mit dem Index n wird durch x ersetzt
l[n:m] = t
Die Elemente der Liste von n bis m-1 werden durch t
ersetzt (t muss iterierbar sein)
l[n:m:k] = t
Die Elemente der Liste von n bis m-1 werden durch t
ersetzt, wobei nur jedes k-te Element beachtet wird (t
muss iterierbar sein)
del l[n]
Das Element an der Stelle n wird entfernt
del l[n:m]
Die Elemente der Liste von n bis m-1 werden entfernt
del l[n:m:k]
Die Elemente der Liste von n bis m-1 werden entfernt,
wobei nur jedes k-te Element beachtet wird
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 19 von 44
2. Datentypen
Methoden für den Datentyp list
Methode
Erklärung
l.append(x)
Das Element x wird an das Ende der Liste angeangen
l.extend(t)
Es werden alle Elemente von t an das Ende der Liste angehangen
l.count(x)
Gibt an, wie oft das Element x in der Liste vorkommen
l.index(x[,m[,k]])
Der Index i des ersten Vorkommens des Element x wird
ausgegeben (optional kann Suchbereich angegeben werden, es
wird dann entweder ab m oder von m bis k-1 gesucht)
l.insert(n,x)
Das Element x wird in der Liste an die Stelle n eingefügt. Alle
folgenden Element werden eine Stelle nach hinten geschoben)
l.pop([n])
Das n-te Element der Liste wird zurück gegeben (falls n nicht
angegeben das letzte), anschließen wird das Element aus der
Liste gelöscht
l.remove(x)
Das erste Vorkommen von x in der Liste wird gelöscht
l.reverse()
Die Reihenfolge der Elemente in der Liste wird umgekehrt
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 20 von 44
2. Datentypen
Sortierung beim Datentyp list
Methode: l.sort([key[,reverse]])
def real_teil(z):
return z.real
liste = [10 + 12j, 3 + 6j, 8 + 22j, 5-2j]
liste.sort(key=real_teil)
liste = [5, 8, 6, 2, 4]
liste.sort(reverse=True)
print (liste)
# [8, 6, 5, 4, 2]
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 21 von 44
2. Datentypen
4. Mappings
– Dictonary (dict)
d={
„Sachsen“ : „Dresden“,
„Thüringen“ : „Erfurt“,
„Berlin“ : „Berlin“
}
Operationen
Operation
Erklärung
len(d)
Gibt die Anzahl der Element von d zurück
d[k]
Gibt den Wert mit dem Schlüssel k zurück
del d[k]
Löscht den Schlüssel k und den dazugehörigen Wert
k in d
liefert Wahrheitswert, ob der Schlüssel k in d enthalten ist
k not in d
liefert Wahrheitswert, ob der Schlüssel k nicht in d
enthalten ist
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 22 von 44
2. Datentypen
Methoden des Dictonarys
Methode
Erklärung
d.clear()
Löscht den gesamten Inhalt des Dictonarys
d.copy()
Kopiert das Wörterbuch (aber nicht den Inhalt)
d.items()
Erzeugt eine Liste von Tupeln (Schlüssel, Wert) mit allen Paaren aus d
d.keys()
Erzeugt eine Liste, welche alle Schlüssel enthält
d.values()
Erzeugt eine Liste, welche alle Werte enthält
d.update(e)
Fügt dem Wörterbuch d das Wörterbuch e hinzu
d.fromkeys(l[, v])
Rückgabe ist ein neues Wörterbuch, welches seine Schlüssel aus der
Liste l bezieht (optional können die Werte mit v initialisiert werden)
d.get(k[, a])
Falls der Schlüssel k existiert wird der Wert von k geliefert, sonst a
d.setdefault(k[, a])
Falls der Schlüssel k nicht existiert wird er mit a initialisiert
d.popitem()
Rückgabe ist ein zufälliges Tupel (Schlüssel, Wert), Paar wird
anschließend aus d entfernt
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 23 von 44
2. Datentypen
5. Mengen
– Mengen (set)
– unveränderliche Mengen (frozenset)
allgemeine Operationen auf Mengen
Operation
Erklärung
len(s)
Gibt die Anzahl der Element von s zurück
e in s
Liefert Wahrheitswert, ob e in s enthalten ist
e not in s
Liefert Wahrheitswert, ob e nicht in s enthalten ist
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 24 von 44
2. Datentypen
Mengenoperationen
Operation
Erklärung
s <= m
Liefert True, wenn s Teilmenge von m
s<m
Liefert True, wenn s echte Teilmenge von m
s >= m
Liefert True, wenn m Teilmenge von s
s>m
Liefert True, wenn m echte Teilmenge von s
s|m
Rückgabe einer Menge, welche Vereinigung von s und m bildet
s&m
Rückgabe einer Menge, welche Schnittmenge von s und m bildet
s-m
Rückgabe einer Menge, welche Differenz von s und m bildet
s^m
Rückgabe einer Menge, welche symmetrische Differenz von s und
m bildet
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 25 von 44
3. Kontrollstrukturen
If, elif, else
if Bedingung:
…
elif Bedingung:
…
else:
…
abkürzende Schreibweise:
y = (1 if x == 2 else 2)
if x==1:
print („x=1“)
if x==1:
print („x=1“)
else:
print („x ungleich 1“)
if x==1:
print („x=1“)
elif x==2:
print („x=2“)
else:
print („x ungleich 1“)
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 26 von 44
3. Kontrollstrukturen
Schleifen
While-Schleife
while Bedingung:
…
else:
…
x=4
while x>1:
print (x)
x=x-1
else:
print („x ist 1“)
For-Schleife
for Variable in Objekt:
…
Range: range(start, stop, step)
for i in range (1, 5, 2):
print (i)
#1
#3
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 27 von 44
3. Kontrollstrukturen
weiteres zu Schleifen
vorzeitiger Abbruch einer Schleife: break
vorzeitiger Abbruch eines Schleifendurchlauf: continue
break
while Bedingung:
…
break
…
else:
…
…
continue
while Bedingung:
…
continue
…
else:
…
…
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 28 von 44
3. Kontrollstrukturen
eigene Funktionen definieren
def Funktionsname (Parameter 1, …, Parameter n):
…
def sum1 (a, b):
return Wert
print (a+b)
def sum2 (a,b):
optionale Parameter:
return a+b
(Parameter 1 = Standardwert, …)
def mult (a, b, c, d=0):
return (a*b*c)+d
def mult (a, b, c, d=0):
return (a*b*c)+d
print (mult(2, 4, 3))
# 24
print (mult(2, 4, 3, 8))
# 32
print (mult(c=2, b=4, a=3))
# 24
print (mult(d=2, a=4, b=3, c=8))
# 98
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 29 von 44
3. Kontrollstrukturen
Variablenzugriff innerhalb einer Funktion
Um Zugriff auf globale Variablen zu erhalten ist das
Schlüsselword global nötig
anonyme Funktionen:
funktion = lambda a, …, z: Rückgabewert
def funktion ():
a = „lokal“
a = „global“
funktion()
print (a)
# global
def funktion ():
global a
a = „lokal“
a = „global“
funktion()
print (a)
# lokal
Proseminar: Softwaretechnologie mit Python
David Voigt
mult = lambda a, b, c: a*b*c
d = mult (1,2,4)
print (d)
#8
18.11.2010
Folien 30 von 44
3. Kontrollstrukturen
Die Anweisungen del und pass
Die del-Anweisung löscht Variablen oder Teile von
sequentiellen Datenstrukturen.
Die pass-Anweisung hat keine Funktion und lässt sich
daher ideal als Platzhalter einsetzen.
a = [2, 3, 8]
del a[1]
print (a)
# [2, 8]
del a
print (a)
# NameError: name 'a' is not defined
Proseminar: Softwaretechnologie mit Python
David Voigt
def funktion():
pass
y=1
if y==1:
pass
else:
pass
18.11.2010
Folien 31 von 44
4. Ausnahmebehandlung
Exceptions in Python
Erben alle von der Klasse BaseException
• ArithmeticError
– OverflowError
– ZeroDivisionError
• LookupError
– IndexError
• SyntaxError
• KeyboardInterrupt
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 32 von 44
4. Ausnahmebehandlung
Abfangen einer Exception
try:
…
def funktion (liste, n):
try:
except Exceptiontyp:
back = liste[n]
except IndexError:
…
print („Es trat ein Fehler auf“)
back = 0
else:
else:
print („Es trat kein Fehler aus“)
…
finally:
return back
finally:
…
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 33 von 44
4. Ausnahmebehandlung
eigene Exceptions
Es besteht die Möglichkeit eigene Exception-Klassen zu
definieren, welche dann geworfen werden können
class ExceptionName(Exception):
…
class Ausnahme(Exception):
pass
raise Ausnahme()
#Traceback (most recent call last):
#File „…", line 25, in <module>
#__main__.Ausnahme
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 34 von 44
5. Built-in Funktionen
Funktion print
print(*value, sep=„ “, end=„\n“, file=sys.stdout)
Parameter
Erklärung
*value
Angabe einer oder mehrerer Strings, welche ausgegeben werden sollen
sep
Angabe eines String, welche zwischen den Strings von *value
ausgegeben werden soll
end
Angabe eines String, welche nach dem letzten String von *value
ausgegeben werden soll
file
Angabe, wohin die Strings ausgegeben werden sollen
print(„ein String“, „noch ein String“)
#ein String noch ein String
print(„Str1“, „Str2“, sep=„_“, end=„“)
print(„Str3“,“Str4“,sep=„.“)
#Str1_Str2Str3.Str4
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 35 von 44
5. Built-in Funktionen
Funktion input
input(prompt=„“)
prompt ist ein optionaler String, welche übergeben
werden kann (dieser wird dann direkt vor der Eingabe
stehen)
Funktion isinstance
isinstance(object, class-or-type-or-tuple)
isinstance(a, (A, B, C) prüft ob a Instanz von A, B oder C
a = „Ich bin ein String!“
if isinstance(a,str):
print(„Ja, du bist wirklich ein String“)
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 36 von 44
5. Built-in Funktionen
Funktion dir
dir(object)
liefert alle Attribute und Methoden zu einem gegeben
Objekt
Funktion help
help(object=„“)
• Ohne Angabe eines Parameter wird die interaktive
Hilfe gestartet
• Bei Angabe eines Parameter wird die Hilfe zu diesem
Objekt angezeigt
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 37 von 44
6. Module und Pakete
Module und Pakete importieren
Variante des Importes
Erklärung
import Mod1
Das Modul Mod1 wird importiert
import Mod1, Mod2
Die Module Mod1 und Mod2 werden importiert
import Mod1 as Name1
Mod1 wird unter dem Namen Name1 importiert
from Mod1 import *
Es wird alles aus Mod1 in den globalen
Namensraum importiert
from Mod1 import fkt1, fkt2
Es werden nur die Funktionen fkt1 und fkt2 in den
globalen Namensraum importiert
from Mod1 import fkt1 as
Funktion1
Es wird nur die Funktionen fkt1 unter dem Namen
Funktion1 in den globalen Namensraum importiert
import math
x=math.sin(math.pi)
import math
from math import sin as Sinus
x=Sinus(math.pi)
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 38 von 44
6. Module und Pakete
eigene Module
Module werden durch Dateien realisiert.
Der Modulname entspricht dem Dateinamen.
Die eigenen Module müssen im gleichen Ordner, wie
das Hauptprogramm liegen.
def fkt1(a, b)
return a+b
def fkt2(a, b)
return a*b
funktionen.py
import funktionen
c=funktionen.fkt(2,3)
d=funktionen.fkt(2,3)
print(c)
print(d)
#5
#6
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 39 von 44
6. Module und Pakete
Zusammenfassung von Modulen in Paketen
Pakete werden durch Ordner realisiert.
Der Paketname entspricht dem Ordnernamen.
In jedem Ordner muss die Datei „__init__.py“
vorhanden sein
from paket1.paket1 import modul1
from paket1 import paket1
from paket1 import modul1
from paket1 import modul2
from paket2 import modul1
Proseminar: Softwaretechnologie mit Python
David Voigt
import paket1
import paket2
print(paket1.modul2.fkt(2,3))
#5
18.11.2010
Folien 40 von 44
7. Weitere Spracheigenschaften
List Comprehensions
erstellt neue Liste aus einer oder mehreren Listen
[neues_Element for Variable in Liste]
[neues_Element for Variable in Liste if Bedingung]
[neues_Element for Var1 in Liste1 for Var2 in Liste2]
liste = [1, 2, 3, 4]
liste2 = [x+2 for x in liste if x<4]
print(liste2)
#3, 4, 5
liste1 = [2, 4, 6, 8]
liste2 = [1, 3, 4, 2]
liste3 = [liste1[i]+liste2[i] for i in range(4)]
print(liste3)
#3, 7, 10, 10
ls1 = [1, 2]
ls2 = [3, 4]
ls3 = [a+b for a in ls1 for b in ls2]
# 4, 5, 5, 6
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 41 von 44
7. Weitere Spracheigenschaften
Generatoren
Generatoren sind Funktionen, welche eine Möglichkeit
bieten Reihen von Werten zu verarbeiten.
Das yield-Statement in der Generator-Funktion sorgt
dafür, dass ein entsprechender Wert zurück gegeben
wird und die Funktion an dieser Stelle fortgesetzt wird.
def quad_gen(max):
i=1
while i <= max:
x = i*i
yield x
i = i+1
for i in quad_gen(3):
print(i)
def name_gen(more1):
yield „Name1“
if more1==False:
return
yield „Name2“
yield „Name3“
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 42 von 44
7. Weitere Spracheigenschaften
Iteratoren
Iteratoren sind Klassen, welche die Möglichkeit bieten
Reihen von Werten zu verarbeiten.
class Iteratorname(object)
def __init__(self, Parameterliste):
…
def __iter__(self):
…
def __next__(self):
if Bedingung:
…
else
raise StopIteration
class Iter:
def __init__(self, max):
self.max=max
self.aktuell=0
def __iter__(self):
return self
def __next__(self):
if self.aktuell<self.max:
self.aktuell=self.aktuell+1
return self.aktuell+3
else:
raise StopIteration
for i in Iter(3):
print(i)
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 43 von 44
Quellen
• Python – Das umfassende Handbuch von Peter
Kaise und Johannes Ernesti
• http://www.python.org
Proseminar: Softwaretechnologie mit Python
David Voigt
18.11.2010
Folien 44 von 44
Herunterladen