2014-07-19 22 views
0

После кода неверен:Python аргумент функции Последовательность прохождения

def add(a, b, c): 
    return a + b + c 
args = (2, 3) 

add(a = 1, *args) 
TypeError: add() got multiple values for keyword argument 'a' 

Я видел несколько примеров в python docs, но я до сих пор не знаю, почему есть ошибка, кто-нибудь может объяснить в деталях?

+2

Отмечу, что поиск ["получил несколько значений для аргумента ключевого слова"] (http://stackoverflow.com/search?q=%22got+multiple+values+for+keyword+argument%22) дает много хитов. Соответствует ли любой из этих вопросов вашему делу? –

ответ

4

При применении аргументов, Python первый заполняет позиционных аргументов, затем именованные аргументы.

В вашем конкретном случае применяется *args, поэтому первый позиционный аргумент передается 2, второй передается 3. Первый аргумент - a.

Затем применяется, а Python обнаруживает, что вы уже применили к нему значение.

Иными словами, Python не может принимать и не принимать позиционные аргументы из соображений, когда вы используете его как аргумент ключевого слова. Просто потому, что вы использовали a, поскольку аргумент ключевого слова не делает его неприемлемым как позиционный аргумент.

Смежные вопросы