Tar*_*nti 1 python function keyword-argument python-3.x
def addv(a,b,*args):
sum = a + b
for x in args:
sum += x
return sum
addv(b = 1,a = 2) # This is valid
addv(args = (1,2,3,4,5,6,7,8),b = 9, a = 10) #This is giving me unexpected keyword argument.
Run Code Online (Sandbox Code Playgroud)
我了解到关键字参数本质上是作为元组传递的。所以,为了结合关键字和变量参数,我做了上面的实验。
有没有办法做这样的事情,或者在调用函数时所有变量参数都必须传递到最后。
您应该使用**运算符来捕获关键字参数。像这样:
def addv(*args, **kwargs):
result = 0
for x in args:
result += x
for x in kwargs.values():
result += x
return result
Run Code Online (Sandbox Code Playgroud)
或者更短的方法(由 Delirious Lettuce 建议):
def addv(*args, **kwargs):
return sum(args) + sum(kwargs.values())
Run Code Online (Sandbox Code Playgroud)
现在你可以这样做:
addv(b = 1, a = 2) # Outputs: 3
addv(1, 2, 3, 4, 5, 6, 7, 8, b = 9, a = 10) # Outputs: 55
Run Code Online (Sandbox Code Playgroud)