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函数参数传递序列
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 第一个填充位置参数,然后关键字参数。
在您的具体情况下,*args
然后应用第一,所以第一个位置参数传递2
,第二个传递3
。第一个参数是a
这里。
然后a = 1
被应用,Python发现你已经为它应用了一个值。
换句话说,当你使用一个作为关键字参数时,Python不能也不会不考虑位置参数。仅仅因为您使用a
作为关键字参数不会使其不适合作为位置参数。
我注意到搜索[“有多个值的关键字参数”](http://stackoverflow.com/search?q=%22got+multiple+values+for+keyword+argument%22)产量很大的命中。这些问题是否适合你的情况? –