Ошибка 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) # передается позиционный аргумент

→ Ссылка