Funktionen
Syntax
Funktionen werden mit dem Schlüsselwort def eingeleitet
def funktions-name(Parameterliste): Anweisung(en)Die Parameterliste besteht aus einem oder mehr Bezeichnern, die durch Kommata getrennt sind.
Parameter können obligatorisch und optional sein. Die optionalen Parameter (0 oder mehr) folgen den obligatorischen.
Beispiel:
#!/usr/bin/python def add(x, y): """Gib x plus y zurueck.""" return x + y print add(2, 3)In der folgenden interaktiven Sitzung wird obige Funktion aufgerufen:
>>> execfile("funktion1.py") 5 >>> add(4,5) 9 >>> add(8,3) 11 >>>
Beispiel einer Funktion mit optionalen Parametern
#!/usr/bin/python def add(x, y=5): """Gib x plus y zurueck.""" return x + y print add(2, 3)Aufrufe der Funktionen könnten wie folgt aussehen:
>>> execfile("funktion1.py") 5 >>> add(4) 9 >>> add(8,3) 11 >>>
Docstring
Die erste Anweisung eines Funktionsrumpfes ist normalerweise eine
Zeichenkette, die als Funktionsname.__doc__ abfragbar ist.
Diese Anweisung wird Docstring genannt.
Beispiel:
>>> execfile("funktion1.py") >>> add.__doc__ 'Gib x plus y zurueck.' >>> add2.__doc__ 'Gib x plus y zurueck. Y optional' >>>
Schlüsselwortparameter
Dabei handelt es sich um eine alternative Möglichkeit eine Funktion
aufzurufen. Die Funktionsdefinition selbst ändert sich nicht.
Ein Beispiel:
def sumsub(a, b, c=0, d=0): return a - b + c - dAls Schlüsselwort-parameter dürfen nur solche verwendet werden, die nicht bereits als Positionsargumente verwendet wurden.
>>> execfile("funktion1.py") >>> sumsub(12,4) 8 >>> sumsub(12,4,27,23) 12 >>> sumsub(12,4,d=27,c=23) 4
Beliebige Anzahl von Parametern
Man hat sehr häufig Fälle, in denen die Anzahl der beim Aufruf nötigen
Parameter a-priori nicht bekannt ist. Man kann dies in Python durch eine
sogenannte Tupel-Refernz realisieren. Der letzte Parameter erhält einen *
vorangestellt, was man keineswegs mit der entsprechenden C-Syntax verwechseln
sollte.
Beispiel:
def beliebig(x, y, *mehr): print "x=", x, ", x=", y print "mehr: ", mehrx und y sind in obiger Funktion zwei gewöhnliche (Positions-)Parameter. Der Stern vor dem dritten Parameter *mehr referenziert ein Tupel.
Beispiel:
>>> execfile("funktion1.py") >>> beliebig(3,4) x= 3 , x= 4 mehr: () >>> beliebig(3,4, "Hallo Welt", 3 ,4) x= 3 , x= 4 mehr: ('Hallo Welt', 3, 4)