Що таке *args та **kwargs в Python
**args і **kwargs - це загальні ідіоми, які дозволяють передати у функцію довільне число аргументів.
*args - повертає кортеж всіх переданих функції неіменованих аргументів:
>>> def foo(*args, g):
print (args)
>>> foo(1,2,3,g=6)
(1, 2, 3)
**kwargs повертає словник всіх іменованих аргументів функції, окрім тих, що визначені окремо:
>>> def foo(f, **kwargs):
print (kwargs)
>>> foo(f=1, app=12, gen=23)
{'gen': 23, 'app': 12}
І *args і **kwargs можна використовувати разом в одній функції. Замість args і kwargs можна використовувати будь-які інші назви, також:
>>> def foo(*arguments, **kwarguments):
print (arguments)
print (kwarguments)
>>> foo(1,2,3, a=1, b=2,c=3)
(1, 2, 3)
{'b': 2, 'a': 1, 'c': 3}
Використання * синтаксису, також можливе при виклику функції:
>>> def foo(a, b, c):
print (a,b,c)
>>> abc = [1,2,3]
>>> foo(*abc)
1 2 3
>>>
Ще одну цікаву можливість використання * синтаксису було додано в третю версію Python:
>>> first, *other = [1,2,3,4]
>>> first
1
>>> other
[2, 3, 4]
>>> first, *other, penult, last = [1,2,3,4]
>>> other
[2]
614 5


Коментарі:
0
v-e-y
Дякую за статтю. Завжди цікавило що це, а погуглити руки не доходили.
Там підправити трошки потрібно "print(arguments)", пробіл відсутній.
0
Q-Bart
Ок, зараз виправимо