Как работают args и kwargs вместе?
Есть функция:
def a(q, w=5, *args, **kwargs):
print(q)
print(w)
print(args)
print(kwarks)
вызываем функцию:
a(1,2,3,4,{1:2})
в q попадет 1, в w попадет 5, в args попадет все остальное.
Есть ли смысл в одну функцию помещать и аргзы и кваргзы?
Ведь в любом случае аргзы съедают все оставшиеся переменные.
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
- Используйте общепринятые конструкции *args и **kwargs для захвата позиционных и именованных аргументов.
- Конструкцию **kwargs нельзя располагать до *args. Если это сделать — будет выдано сообщение об ошибке.
- Остерегайтесь конфликтов между именованными параметрами и **kwargs, в случаях, когда значение планируется передать как **kwarg-аргумент, но имя ключа этого значения совпадает с именем именованного параметра.
- Оператор *можно использовать не только в объявлениях функций, но и при их вызове.
#def a(q, w=5, *args, **kwargs):
def a(q, *args, w=5, **kwargs):
print(f'args = {args}')
print(f'kwargs = {kwargs}\n')
print(f'q = {q}')
print(f'w = {w}')
a(1, 2, 3, 4, {1:2}, hello='world')