Я думаю, что пример - лучший способ продемонстрировать args
и kwargs
. Обратите внимание на следующее:
def foo(*args):
print(args)
foo(1, 2, 3)
выходы:
(1, 2, 3)
def bar(**kwargs):
print(kwargs)
bar(a=1, b=2, c=3)
выходы:
{'a': 1, 'b': 2, 'c': 3}
def foobar(*args, **kwargs):
print('args', args)
print('kwargs', kwargs)
foobar(1, 2, 3, d=4, e=5, f=6)
выходы:
args (1, 2, 3)
kwargs {'d': 4, 'e': 5, 'f': 6}
Короче говоря, args
позволяет функциям принимать любые безымянные переменные, а kwargs
позволяет функциям принимать любые именованные переменные. Однако, это не имя args
и kwargs
, которое наделяет их этим специальным свойством, а точное определение каждого из них с *
и **
:
def foo(*lol):
print(lol)
foo(1, 2, 3)
output:
(1, 2, 3)
Ознакомьтесь с Python документацией по ним здесь .
Приведенная выше концепция также работает для распаковки других объектов, таких как list
и set
. Примечание:
print([1, 2, 3]) # >>> [1, 2, 3]
, где
print(*[1, 2, 3]) # >>> 1 2 3
Выше приведен эквивалент передачи трех отдельных аргументов в функцию print
, поэтому это то же самое, что и:
print(1, 2, 3)