Variable Anzahl von Argumenten

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:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
zip(*iterables, strict=False)
Source: https://docs.python.org/3/library/functions.html
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.
Beispielaufrufe der Funktion:
def num_args(*args):
    ...

print(num_args(1, 2, 3))  # 3
print(num_args())         # 0
print(num_args('Anna'))   # 1
 
Profi-Tipp 😎: Es ist auch möglich, eine einfache Liste in *args umzuwandeln:
a = [1, 2, 3, 'hello']
print(*a)

# Das ist gleichbedeutend mit
print(1, 2, 3, 'hello')
Jetzt wissen Sie, wie Sie Listen einfach ausgeben können.
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue