函数参数使用可变类型 ->错误)参数的多个值
朱庇特笔记
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跟踪(最近一次通话) 在 ----> 1只鹦鹉({1,2,},voltage = {}) 2#???
TypeError:parrot()为参数“ voltage”获得了多个值
答案 0 :(得分:1)
出现该错误的原因是在函数定义中,您的第一个参数是voltage
。当您调用parrot
时,您在此调用语句中传递的第一个参数将被赋予voltage
。
现在,在parrot(110,voltage=220)
中,您给voltage
2个不同的值110和220。这自然会引起错误。同样,出于相同的原因,即使对于parrot({1,2,}, voltage={})
,也会遇到相同的错误。
您可以通过删除两个函数调用中的任何一个参数来解决此问题。