
In Python können Sie list, tuple, dict (Wörterbuch) entpacken und seine Elemente als Argumente an die Funktion übergeben, indem Sie * zur Liste oder zum Tupel und ** zum Wörterbuch hinzufügen, wenn Sie die Funktion aufrufen.
Dieser Artikel hat folgenden Inhalt.
- Liste entpacken und mit * tupeln
- Mit Standardargumenten
- Mit Argumenten variabler Länge
- dict (Wörterbuch) entpacken mit **
- Mit Standardargumenten
- Mit Argumenten variabler Länge
Beachten SIE, dass list, tuple oder dict als Argument ohne * oder ** nicht entpackt und unverändert an die Funktion übergeben werden.
In den following Artikeln FINDEN SIE sterben grundlegende Verwendung von Funktionen in Python, Standardargumente und Argumente variabler Länge mit * und ** beim Definieren von Funktionen.
Liste entpacken und mit * tupeln
Wenn Sie eine Liste oder ein Tupel mit * als Argument angeben, wird es entpackt und jedes Element wird jedem Argument übergeben.
def func(arg1, arg2, arg3):
print('arg1 =', arg1)
print('arg2 =', arg2)
print('arg3 =', arg3)
l = ['one', 'two', 'three']
func(*l)
# arg1 = one
# arg2 = two
# arg3 = three
func(*['one', 'two', 'three'])
# arg1 = one
# arg2 = two
# arg3 = three
t = ('one', 'two', 'three')
func(*t)
# arg1 = one
# arg2 = two
# arg3 = three
func(*('one', 'two', 'three'))
# arg1 = one
# arg2 = two
# arg3 = three
Im following Beispielcode werden Listen used, aber dasselbe gilt für Tupel.
Wenn die Anzahl der Elemente nicht mit der Anzahl der Argumente angezeigt wird, WIRD TypeError ausgelöst.
# func(*['one', 'two'])
# TypeError: func() missing 1 required positional argument: 'arg3'
# func(*['one', 'two', 'three', 'four'])
# TypeError: func() takes 3 positional arguments but 4 were given
Mit Standardargumenten
Wenn die Funktion Standardargumente hat, Werden die Standardargumente used, Wenn die Anzahl der Elemente nicht ausreicht. Wenn viele Elemente vorhanden sind, WIRD TypeError ausgelöst.
def func_default(arg1=1, arg2=2, arg3=3):
print('arg1 =', arg1)
print('arg2 =', arg2)
print('arg3 =', arg3)
func_default(*['one', 'two'])
# arg1 = one
# arg2 = two
# arg3 = 3
func_default(*['one'])
# arg1 = one
# arg2 = 2
# arg3 = 3
# func_default(*['one', 'two', 'three', 'four'])
# TypeError: func_default() takes from 0 to 3 positional arguments but 4 were given
Mit Argumenten variabler Länge
Wenn die Funktion ein Argument variabler Länge (*args) hat, werden alle Elemente nach dem Positionsargument an das Argument variabler Länge übergeben.
def func_args(arg1, *args):
print('arg1 =', arg1)
print('args=", args)
func_args(*["one', 'two'])
# arg1 = one
# args = ('two',)
func_args(*['one', 'two', 'three'])
# arg1 = one
# args = ('two', 'three')
func_args(*['one', 'two', 'three', 'four'])
# arg1 = one
# args = ('two', 'three', 'four')
dict (Wörterbuch) entpacken mit **
Indem ** zu dict (Wörterbuch) hinzugefügt und als Argument angegeben WIRD, Werden seine Schlüssel und Werte als Namen und Werte von Argumenten behandelt. Jedes Element wird als Schlüsselwortargument übergeben.
def func(arg1, arg2, arg3):
print('arg1 =', arg1)
print('arg2 =', arg2)
print('arg3 =', arg3)
d = {'arg1': 'one', 'arg2': 'two', 'arg3': 'three'}
func(**d)
# arg1 = one
# arg2 = two
# arg3 = three
func(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three'})
# arg1 = one
# arg2 = two
# arg3 = three
Wenn nicht genügend Schlüssel oder Schlüssel vorhanden sind, sterben nicht mit den Argumentnamen übereinstimmen, WIRD TypeError ausgelöst.
# func(**{'arg1': 'one', 'arg2': 'two'})
# TypeError: func() missing 1 required positional argument: 'arg3'
# func(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three', 'arg4': 'four'})
# TypeError: func() got an unexpected keyword argument 'arg4'
Mit Standardargumenten
Wenn die Funktion Standardargumente hat, WIRD Nur der Wert des Argumentnamens aktualisiert, der dem Wörterbuchschlüssel entspricht.
Wenn ein Schlüssel nicht mit dem Argumentnamen gefunden wird, wird TypeError ausgelöst.
def func_default(arg1=1, arg2=2, arg3=3):
print('arg1 =', arg1)
print('arg2 =', arg2)
print('arg3 =', arg3)
func_default(**{'arg1': 'one'})
# arg1 = one
# arg2 = 2
# arg3 = 3
func_default(**{'arg2': 'two', 'arg3': 'three'})
# arg1 = 1
# arg2 = two
# arg3 = three
# func_default(**{'arg1': 'one', 'arg4': 'four'})
# TypeError: func_default() got an unexpected keyword argument 'arg4'
Mit Argumenten variabler Länge
If die Funktion ein Argument variabler Länge hat (**kwargs), Werden alle Elemente mit Schlüsseln, die nicht mit dem Argumentnamen übereinstimmen, an das Argument variabler Länge übergeben.
def func_kwargs(arg1, **kwargs):
print('arg1 =', arg1)
print('kwargs=", kwargs)
func_kwargs(**{"arg1': 'one', 'arg2': 'two', 'arg3': 'three'})
# arg1 = one
# kwargs = {'arg2': 'two', 'arg3': 'three'}
func_kwargs(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three', 'arg4': 'four'})
# arg1 = one
# kwargs = {'arg2': 'two', 'arg3': 'three', 'arg4': 'four'}
func_kwargs(**{'arg1': 'one', 'arg3': 'three'})
# arg1 = one
# kwargs = {'arg3': 'three'}