如何在python中将变量长度参数与关键字参数组合?

问题描述 投票:1回答:1
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.

我了解到关键字参数本质上是作为元组传递的。因此,在尝试结合关键字和变量参数时,我进行了上述实验。

有没有办法做这样的事情或者所有变量参数必须在调用函数时传递给结尾。

python python-3.x function keyword-argument
1个回答
4
投票

您应该使用**运算符来捕获关键字参数。像这样:

def addv(*args, **kwargs):
    result = 0
    for x in args:
        result += x
    for x in kwargs.values():
        result += x
    return result

或者更短的方式(Delirious Lettuce建议):

def addv(*args, **kwargs):
    return sum(args) + sum(kwargs.values())

现在你可以这样做:

addv(b = 1, a = 2) # Outputs: 3
addv(1, 2, 3, 4, 5, 6, 7, 8, b = 9, a = 10) # Outputs: 55
© www.soinside.com 2019 - 2024. All rights reserved.