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.