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 - d
Als 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: ", mehr
x 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)