Artikelverzeichnis
Vorwort
In Python sollte bei der Verwendung von *
AND **
unterschieden werden, unabhängig davon, ob die Funktion definiert oder aufgerufen wird.
1. *
Bei **
der Definition der Funktion
def deng(*args,**kwargs):
print(args)
print(kwargs)
deng(1,2,3,a = 4,b = 5)
Wenn es beim Definieren einer Funktion vor den Parametern verwendet wird *
, bedeutet dies, dass die Nicht-Schlüsselwortparameter beim Aufruf der Funktion gesammelt und in einem Tupel args gespeichert werden.
Wird beim Definieren einer Funktion vor den Parametern verwendet **
, bedeutet dies, dass die Schlüsselwortparameter beim Aufruf der Funktion gesammelt und in einem Wörterbuch von kwargs gespeichert werden.
2. *
Beim **
Aufruf der Funktion
Wird beim Aufrufen einer Funktion vor dem Parameter verwendet *
. Dies bedeutet, dass der Parameter entpackt wird (die Elemente in der Sequenz entsprechend den Positionsparametern an die Funktion übergeben werden).
def deng(a,b,c,d):
print(a)
print(b)
print(c)
print(d)
list_a = [1,2,3,4]
deng(*list_a)
Wird beim Aufrufen einer Funktion vor dem Parameter verwendet **
. Dies bedeutet, dass der Parameter entpackt wird (die Elemente im Wörterbuch werden als Schlüsselwortparameter an die Funktion übergeben).
def deng(a,b,c,d):
print(a)
print(b)
print(c)
print(d)
dict_a = {
'a' : 1,'b' : 3,'c' : 4,'d' : 2 }
deng(**dict_a)