Kapitel 6
Funktionen
170
Mit der Zuweisung liste=[] in der Liste der formalen Parameter wird ein (zunächst) leeres
Listen-Objekt mit dem Namen
liste geschaffen, das auch dann existiert, wenn die Funk-
tion nicht aufgerufen worden ist. Bei jedem Aufruf der Funktion mit nur einem Argument
x wird die existierende Liste um dieses Element x verlängert.
Zweites Beispiel: Die folgende Funktion realisiert einen Automaten, der »Wartenummern«
erzeugt, die z.B. den wartenden Patienten in einer Arztpraxis oder den Besuchern des Stra-
ßenverkehrsamtes gegeben werden.
6.5.1 Schlüsselwort-Argumente
Funktionen haben häufig mehrere Parameter. Betrachten wir als Beispiel eine Funktion, die
einen ärztlichen Untersuchungsbericht schreibt:
Aufruf der Funktion:
>>> def haengeAn (a, liste=[]):
liste += [a]
return liste
>>> haengeAn(1)
[1]
>>> haengeAn (2)
[1, 2]
>>> haengeAn (3)
[1,2,3]
>>> def nummer(nr=[0]):
print("Sie sind an der Reihe, wenn Nummer", nr[0], "angezeigt wird.")
nr[0] += 1
>>> nummer()
Sie sind an der Reihe, wenn Nummer 0 angezeigt wird.
>>> nummer()
Sie sind an der Reihe, wenn Nummer 1 angezeigt wird.
def bericht( name, vorname, diagnose):
print('Untersuchungsbericht')
print('--------------------')
print('Patient:', vorname, name)
print('Diagnose:', diagnose)
>>> bericht('Konrad', 'Maren', 'Schnupfen')
Untersuchungsbericht
171
6.5
Voreingestellte Parameterwerte
Bei dem Aufruf der Funktion wird dem formalen Parameter name das erste Argument 'Kon-
rad'
, dem formalen Parameter vorname das zweite Argument 'Maren', dem formalen
Parameter
diagnose das dritte Argument 'Schnupfen' zugeordnet.
Das heißt: Bei dem Aufruf müssen die aktuellen Parameter (Argumente) in der gleichen
Reihenfolge aufgeführt werden wie die zugehörigen formalen Parameter innerhalb des
Kopfes der Funktionsdefinition. Man spricht dann von Positionsargumenten, weil sich die
Zuordnung eines Arguments zu einem formalen Parameter aus der Position in der Argu-
mentliste ergibt.
Positionsargumente sind eine potenzielle Quelle für semantische Fehler. Denn es kann bei
einem komplexen Programm passieren, dass man die Argumente in ihrer Reihenfolge ver-
tauscht, ohne dass dies zu einer Fehlermeldung des Systems führt. Bei unserem Beispiel
gibt auch der Aufruf
Sinn. Aber hier wurden Vor- und Nachname vertauscht. (Man überlege sich, welche Folgen
das im medizinischen Bereich haben kann!)
Alternativ zu Positionsargumenten können bei Funktionsaufrufen so genannte Schlüssel-
wort-Argumente (keyword arguments) in der Form
verwendet werden. Beispiel:
Dieser Aufruf liefert das gleiche (korrekte) Ergebnis wie die Variante mit Positionsargumen-
ten, obwohl hier die Argumente eine andere Reihenfolge als die formalen Parameter haben.
Offensichtlicher Vorteil ist eine bessere Lesbarkeit des Funktionsaufrufs. Versehentliche
Vertauschungen von Argumenten sind praktisch kaum noch möglich. Denn Schlüsselwort-
argumente können in beliebiger Reihenfolge in der Parameterliste aufgeführt werden. Posi-
tionsargumente und Schlüsselwortargumente können übrigens gemischt werden, wobei
allerdings einem Schlüsselwortargument kein Positionsargument folgen darf. Bezogen auf
das obige Beispiel sind folgende Funktionsaufrufe erlaubt:
--------------------
Patient: Maren Konrad
Diagnose: Schnupfen
>>> bericht('Maren', 'Konrad', 'Schnupfen')
Schlüsselwort=Wert
>>> bericht(vorname='Maren',
name='Konrad',
diagnose='Schnupfen')
>>> bericht(diagnose='Schnupfen', name='Konrad', vorname='Maren')
>>> bericht('Konrad', 'Maren', diagnose='Schnupfen')

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.