这个问题已经在这里有了答案:




已关闭8年。






我已经阅读了一段python代码,但我不知道*和**在这段代码中是什么意思:

def functionA(self, *a, **kw):
   // code here

我只知道*的一种用法:将它具有的所有属性提取到方法或构造函数的参数中。

如果以上功能为真,那么其余的是什么:**?

最佳答案

函数头中:
*收集元组中的所有位置参数。
**收集字典中的所有关键字参数。

>>> def functionA(*a, **kw):
       print(a)
       print(kw)


>>> functionA(1, 2, 3, 4, 5, 6, a=2, b=3, c=5)
(1, 2, 3, 4, 5, 6)
{'a': 2, 'c': 5, 'b': 3}

函数中,调用:
*将列表或元组解压缩为位置参数。
**将字典分解成关键字参数。
>>> lis=[1, 2, 3, 4]
>>> dic={'a': 10, 'b':20}
>>> functionA(*lis, **dic)  #it is similar to functionA(1, 2, 3, 4, a=10, b=20)
(1, 2, 3, 4)
{'a': 10, 'b': 20}

关于python - 在函数签名中,变量名前的*和**是什么意思? [复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11315010/

10-12 16:50