Соответствие аргумента Python для f (a, * b) - PullRequest
0 голосов
/ 03 сентября 2018
def f(a,*b):
    print(a,b)

для функции f, определенной выше, если я вызываю f(1, *(2,3)), она печатает 1, (2,3), как и ожидалось.

Однако вызов f(a=1, *(2,3)) вызывает ошибку: TypeError: f () получил несколько значений для аргумента 'a'

Любой позиционный аргумент также может быть указан в качестве явного ключевого аргумента. Должна быть только одна интерпретация для f(a=1, *(2,3)) без двусмысленности.

1 Ответ

0 голосов
/ 03 сентября 2018
def f(a,*b):
    print(a,b)
f(1,*(2,3))
f(1,2,3)

рассмотрим пример выше, оба будут вызывать одну и ту же функцию одинаково Теперь, если вы укажите а = 1

f(a=1,2,3)
#or in other syntax
f(2,3,a=1)

тогда возникает двусмысленность относительно того, следует ли учитывать a=1 or a=2, поскольку 2 - это первый позиционный аргумент, а a=1 - явный аргумент ключевого слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...