In Python sind die Parameter * (Doppelstern/Stern) und (Stern Die /asterisk-Notation in Funktionsdefinitionen und Aufrufen spielt eine entscheidende Rolle bei der Handhabung von Variablen Argumente.
Die Syntax
def foo(x, y, **kwargs): pass
gibt an, dass die Funktion foo eine beliebige Anzahl von Schlüsselwortargumenten akzeptieren kann. Diese Schlüsselwortargumente werden in einem Wörterbuch namens kwargs gesammelt. Zum Beispiel:
def bar(**kwargs): for a in kwargs: print(a, kwargs[a]) # Call the function bar(name='one', age=27) # Output: # name one # age 27
Ähnlich ermöglicht die Syntax
def foo(x, y, *args): pass
der Funktion foo, eine beliebige Anzahl von Positionsargumenten zu akzeptieren. Diese Argumente werden in einem Tupel mit dem Namen args.
def foo(*args): for a in args: print(a) # Call the function foo(1) # Output: 1 foo(1, 2, 3) # Output: 1 # Output: 2 # Output: 3
Sowohl *kwargs als auch args können zusammen verwendet werden erlauben sowohl feste als auch variable Argumente. Zum Beispiel:
def foo(kind, *args, bar=None, **kwargs): print(kind, args, bar, kwargs) # Call the function foo(123, 'a', 'b', apple='red') # Output: 123 ('a', 'b') None {'apple': 'red'}
Die *-Notation kann auch zum Entpacken von Argumentlisten beim Aufrufen von Funktionen verwendet werden. Zum Beispiel:
def foo(bar, lee): print(bar, lee) # Create a list baz = [1, 2] # Call the function using unpacking foo(*baz) # Output: 1 2
In Python 3.8 und höher ist es möglich, in einer Funktionsdefinition mithilfe von nur Positionsparameter anzugeben * Notation vor den regulären Parametern:
def func(arg1, arg2, arg3, *, kwarg1, kwarg2): pass
Diese Funktion kann nur drei Positionsargumente akzeptieren, und alle zusätzlichen Argumente müssen es sein als Schlüsselwortargumente übergeben.
In Python 3.6 und höher wird die Reihenfolge der Schlüsselwortargumente im kwargs-Wörterbuch beibehalten. Dies kann in bestimmten Szenarien nützlich sein, beispielsweise wenn Sie die Reihenfolge der an die Funktion übergebenen Argumente beibehalten müssen.
Das obige ist der detaillierte Inhalt vonWie funktionieren *args und kwargs in Python-Funktionsdefinitionen und -Aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!