Wir haben bereits einige Funktionen gesehen, die eine variable Anzahl von Argumenten akzeptieren, wie zum Beispiel print() oder zip(). Dennoch haben wir bisher keine eigene solche Funktion erstellt. Wie schreibt man eine Funktion, die eine variable Anzahl von Argumenten verarbeiten kann?
Beim Ausgeben von Elementen können wir die Funktion print() mit so vielen Argumenten aufrufen, wie wir möchten, und sie wird alle ausgeben:
print('Hi') # Hi
print('Hi', 'how', 'are', 1) # Hi how are 1
print(1, 2, 3, 8) # 1 2 3 8
Wenn wir uns die Funktionssignatur von print() in den offiziellen Python-Dokumenten ansehen, sehen wir, dass das erste Argument tatsächlich die gesamte Liste der übergebenen (nicht benannten) Argumente erfasst. Dasselbe gilt für die Funktion zip:
Wir können unsere eigenen Funktionen definieren, die eine variable Anzahl von Argumenten mit einem Sternchen * akzeptieren:
def income(*purchases):
total = 0
for purchase in purchases:
total += purchase
return total
print(income(1, 2, 3, 4, 10)) # 20
Hier können wir purchases als eine Liste von Zahlen behandeln. Wir können ihre Länge mit len() ermitteln, wir können mit einer for-Schleife über die Elemente iterieren usw.
Aufgabe
Implementieren Sie eine Funktion num_args(), die die Anzahl der ihr übergebenen Argumente zurückgibt.