**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]
Ще немає коментарів