"Python中*args和**args的区别?"

2024-04-26 10:32:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解在python中函数定义中,*args和**args之间的区别。在下面的示例中,*args将打包到一个元组中并计算总和。在

>>> def add(*l):
... sum = 0
... for i in l:
... sum+=i
... return sum ...
>>> add(1,2,3)
6
>>> l = [1,2,3]
>>>add(*l)
6

对于**args

^{pr2}$

我看到它接受参数并转换成字典。但是我不明白在使用**args时该实用程序或其他有用的东西。事实上,我不知道*arg和**arg是什么名称(vararg和?)在

谢谢


Tags: 函数inadd示例forreturn定义def
1条回答
网友
1楼 · 发布于 2024-04-26 10:32:05

当您使用两个星号时,通常将它们称为**kwargs作为关键字参数。它们对于在大型程序中从一个函数传递参数到另一个函数非常有用。在

关键字参数的一个优点是修改代码非常容易。假设在下面的示例中,您还确定参数cube也是相关的。您只需要在my_func_2中添加一个if statement,并且不需要为每个调用my_func_2的函数添加参数(只要该函数有**kwargs)。在

这里有一个简单而愚蠢的例子,但我希望它能有所帮助:

def my_func_1(x, **kwargs):
    if kwargs.get('plus_3'):
        return my_func_2(x, **kwargs) + 3
    return my_func_2(x, **kwargs)

def my_func_2(x, **kwargs):
    #Imagine that the function did more work
    if kwargs.get('square'):
        return x ** 2
    # If you decided to add cube as a parameter 
    # you only need to change the code here:
    if kwargs.get('cube'):
        return x ** 3
    return x

演示:

^{pr2}$

相关问题 更多 >