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 die einzelnen Argumente benannt haben, ist es auch nicht mehr wichtig, diese in der richtigen Reihenfolge zu schreiben. Python weiss, 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 nicht direkt ersichtlich sit, 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.

Fragen und Kommentare

Haben Sie Fragen oder Kommentare zu diesem Artikel? Nutzen Sie das Forumd helfen Sie sich und Ihren Mitstudierenden dieses Thema besser zu verstehen.