Heim >Backend-Entwicklung >Python-Tutorial >Wie gehen Pythons *args und kwargs mit Funktionsparametern um?
Parameter-Entpacken mit und in Python-Funktionen*
In Python-Funktionen die und * Die Syntax ermöglicht eine größere Flexibilität bei der Parameterbehandlung.
Entpacken von Positionsargumenten (kwargs)
Der Parameter *args sammelt alle Positionsargumente als Tupel. Zum Beispiel:
def foo(x, y, *args): for a in args: print(a)
Der Aufruf von foo(1, 2, 3) gibt Folgendes aus:
1 2 3
Keyword Argument Unpacking (kwargs)
Der Parameter **kwargs sammelt alle Schlüsselwortargumente als Wörterbuch. Zum Beispiel:
def bar(x, y, **kwargs): for k, v in kwargs.items(): print(k, v)
Calling bar(x=1, y=2, name='John') gibt Folgendes aus:
name John
Combined Unpacking
Beide Redewendungen können kombiniert werden, um eine Mischung aus festen und variablen Argumenten zu ermöglichen. Zum Beispiel:
def foo(kind, *args, bar=None, **kwargs): print(kind, args, bar, kwargs)
Der Aufruf von foo(123, 'a', 'b', apple='red') gibt Folgendes aus:
123 ('a', 'b') None {'apple': 'red'}
Umgekehrt können kwargs sein Wird zum Entpacken von Schlüsselwortargumenten in Funktionsaufrufen verwendet. Zum Beispiel:
def foo(a, b, c): print(a, b, c) obj = {'b':10, 'c':'lee'} foo(100, **obj) # Prints 100 10 lee
Listen- und Tupel-Entpacken mit *
Die *-Syntax kann auch zum Entpacken von Listen und Tupeln beim Aufruf von Funktionen verwendet werden. Zum Beispiel:
def foo(bar, lee): print(bar, lee) baz = [1, 2] foo(*baz) # Prints 1 2
Extended Iterable Unpacking
In Python 3 kann * auf der linken Seite einer Zuweisung verwendet werden, um Iterables in einzelne Variablen zu entpacken. Zum Beispiel:
first, *rest = [1, 2, 3, 4] # first = 1 # rest = [2, 3, 4]
Nur Positionsargumente
Python 3 führte auch Nur-Positionsargumente ein. Funktionen können festlegen, dass nur bestimmte Argumente positionell sein können. Zum Beispiel:
def func(arg1, arg2, arg3, *, kwarg1, kwarg2): pass
Diese Funktion akzeptiert nur 3 Positionsargumente. Alle Argumente nach * müssen als Schlüsselwortargumente übergeben werden.
Das obige ist der detaillierte Inhalt vonWie gehen Pythons *args und kwargs mit Funktionsparametern um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!