[英]Python function argument passing sequence
以下代码不正确:
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中看到了一些示例,但是我仍然不知道为什么会有错误,有人可以详细解释吗?
应用自变量时,Python 首先填充位置自变量, 然后填充关键字自变量。
在您的特定情况下,首先应用*args
,因此第一个位置参数传递2
,第二个位置参数传递3
。 第一个参数是a
在这里。
然后应用a = 1
,Python发现您已经对其应用了一个值。
换句话说,当您将位置参数用作关键字参数时,Python不会也不会考虑位置参数。 仅仅因为你使用a
作为关键字参数并不能使它作为资格位置参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.