Ошибка multiple values for argument при вызове функции
Можете объяснить, почему не работает конструкция вызова функции вида:
def foo(a, b, c=-20, *args):
print(a, b, c, args)
tup = (1, 2, 3, 4)
foo(1,2,c=100,*tup)
Если с у меня позиционный аргумент со стандартным значением -20, то почему я не могу вызвать функцию с указанием с=100 ?
Ответы (1 шт):
Автор решения: Kers
→ Ссылка
Позиционный аргумент (*args) следует за именованным аргументом (c = 100) в этом и ошибка.
Именованный аргумент
def foo(a, b, *args, c=-20):
print(a, b, c, args)
tup = (1, 2, 3, 4)
foo(1,2,tup, c = 100) # Передан именованный аргумент
Позиционный аргумент
def foo(a, b, c=-20, *args):
print(a, b, c, args)
tup = (1, 2, 3, 4)
foo(1,2,100,*tup) # передается позиционный аргумент