Skip to main content

Schlüsselwort- und Standartargumente

In diesem kurzen Artikel diskutieren wir noch zwei weitere Aspekte der Definition von Prozeduren und Funktionen, die in der täglichen Arbeit manchmal nützlich sind. Da Sie Funktionen und Prozeduren aber auch problemlos ohne diese Techniken nutzen können, können Sie diesen Artikel beim ersten lesen des Materials auch überspringen und später darauf zurückkommen.

Bei der Definition einer Prozedur oder Funktion werden die Anzahl Argumente definiert wird, die wir beim Aufruf angeben müssen. Dabei bestimmt die Position der Werte beim Aufruf, welchem Argument welcher Wert zugewiesen wird.

Angenommen, wir haben zum Beispiel folgende Prozedur definiert, welche die Zahlen von einer Zahl from bis zu einer Zahl to ausgibt, dabei aber immer in Schritten zählt, die durch das Argument step angegeben wurde:

def print_range(from, to, step):
i = from
while i < to:
print(i)
i = i + step

Um die Zahlen 0, 1, 2, 3, 4 auszugeben, würden wir die Prozedur wie folgt aufrufen:

print_range(0, 5, 1)

Wir müssen Werte für alle 3 Argumente angeben und die Reihenfolge der Werte bestimmt, welcher Wert welchem Argument zugewiesen wird.

Schlüsselwortargumente

Beim obigen Aufruf wird nicht unbedingt klar, welcher Wert nun was bedeutet. Um zu Wissen was die Werte bedeuten, müssen wir die Definition der Prozedure print_range anschauen. Um den Code etwas klarer zu machen, erlaubt uns Python beim Aufruf die Namen der Argumente anzugeben. Wir könnten also folgendes schreiben:

print_range(from=0, to=5, step=1)

Da wir nun die einzelnen Argumente benannt haben, ist es auch nicht mehr wichtig, diese in der richtigen Reihenfolge zu schreiben. Python weiss nun, welcher Wert welchem Argument zugewiesen werden soll. Der folgende Aufruf würde genau dasselbe bewirken.

print_range(to=5, step=1, from=0)

Standardargumente

Beim Definieren einer Funktion oder Prozedur haben wir manchmal bereits eine gute Vorstellung, welche Werte für die Argumente am meisten verwendet werden. In unserer print_range Prozedur wird wahrscheinlich oft der Wert 1 für das Argument step gewählt, da dies der natürlichen Art zu zählen entspricht. Wenn wir solches Vorwissen bereits haben, dann können wir dem Aufrufer der Prozedur oder Funktion das Leben erleichtern, indem wir ein Standardargument einführen. Für unsere print_range Prozedur würde dies wie folgt aussehen:

def print_range(from, to, step = 1):
i = from
while i < to:
print(i)
i = i + step

Beim Aufruf der Prozedur kann nun der Wert für das Argument step weggelassen werden. Der Aufruf print_range(0, 5) würde genau dasselbe bewirken wie der Aufruf print_range(0, 5, 1). Wenn wir die Prozedur einmal einen anderen Wert als den Standardwert 1 aufrufen wollen, können wir den Wert für das Argument step explizit angeben. Zum Beispiel würde print_range(0, 5, 2) nun wie vorher die Zahlen im Abstand von 2 ausgeben.

Da für den Leser eines Programms die Bedeutung dieser Standardargumente meist etwas schwieriger zu erraten ist als die unbedingt benötigten Argumente, werden diese beim Aufruf meist als Schlüsselwortargument angegeben. Ein typischer Aufruf wäre also

print_range(0, 5, step=2)

Damit wird dem Leser des Programms nochmals klargemacht, was die Bedeutung des Werts 2 ist.