переопределение неизменяемого параметра функции - PullRequest
0 голосов
/ 10 июля 2019

параметр функции использует изменяемый тип -> ошибка) несколько значений для аргумента

Jupyter-note

https://docs.python.org/ko/3/tutorial/controlflow.html

def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
    print("-- This parrot wouldn't", action, end=' ')
    print("if you put", voltage, "volts through it.")
    print("-- Lovely plumage, the", type)
    print("-- It's", state, "!")
parrot(110, voltage=220)
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
    print("-- This parrot wouldn't", action, end=' ')
    print("if you put", voltage, "volts through it.")
    print("-- Lovely plumage, the", type)
    print("-- It's", state, "!")

почемупеременная параметра может переопределить изменяемый тип пользователя?

parrot({1,2,}, voltage={})

TypeError Traceback (последний вызов был последним) в ----> 1 попугай ({1,2,}, Voltage = {}) 2 # ???

TypeError: parrot () получил несколько значений для аргумента 'Voltage'

1 Ответ

1 голос
/ 10 июля 2019

Причина, по которой вы получаете эту ошибку, заключается в том, что в определении функции ваш первый параметр - voltage.Когда вы вызываете parrot, первый аргумент, который вы передаете в этом операторе вызова, будет передан voltage.

Теперь в parrot(110,voltage=220) вы задаете voltage 2 различных значения, 110 и 220. Это, естественно, вызовет ошибку.Вы получите ту же ошибку даже для parrot({1,2,}, voltage={}), опять же, по той же причине.

Вы можете исправить это, удалив любой аргумент в любом из ваших вызовов функций.

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