Je l'oublie souvent, alors prenez note.
Si * args
est spécifié comme argument, il recevra un nombre arbitraire d'arguments et deviendra un taple.
>>> def func(a, b, *args):
... print('a: {}'.format(a))
... print('b: {}'.format(b))
... print('*args: {}'.format(args))
...
>>> func(1, 2, 3, 4, 5, 6)
a: 1
b: 2
*args: (3, 4, 5, 6)
Si vous spécifiez ** kargs
comme argument, vous pouvez recevoir n'importe quel nombre d'arguments de mot-clé et l'utiliser comme dictionnaire.
>>> def func(a, b, **kargs):
... print('a: {}'.format(a))
... print('b: {}'.format(b))
... print('**kargs: {}'.format(kargs))
...
>>> func(1, 2, x=3, y=4, z=5)
a: 1
b: 2
**kargs: {'z': 5, 'x': 3, 'y': 4}
Si vous ajoutez «*» à la liste et que vous le passez à l'argument, il sera décompressé et assigné à l'argument.
>>> args = [1, 2, 3]
>>> def func(a, b, c):
... return a + b + c
...
>>> func(*args)
6
Si vous ajoutez «**» au dictionnaire et que vous le passez à l'argument, il sera décompressé et assigné à l'argument.
>>> kargs = {'a': 3, 'b': 4, 'c': 5}
>>> def func(a, b, c):
... return a + b + c
...
>>> func(**kargs)
12
>>> args = [3, 4, 5]
>>> def func(a, b, *args):
... print('a: {}'.format(a))
... print('b: {}'.format(b))
... print('*args: {}'.format(args))
...
>>> func(1, 2, *args)
a: 1
b: 2
*args: (3, 4, 5)
Il est décompressé en le passant à l'argument avec * args
, et la fonction le reçoit comme un argument de longueur variable, donc il devient une liste.
C'est une histoire que vous pouvez donner sous forme de liste depuis le début, mais vous pouvez aussi le faire.
* args ** Signification de kwargs
Recommended Posts