What do * and ** before a variable name mean in a function signature?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Understanding kwargs in Python
我读过一段python代码,不知道这段代码中的*和**是什么意思:
1 2 | def functionA(self, *a, **kw): // code here |
我只知道*的一种用法:提取它对方法或构造函数的参数所具有的所有属性。
如果上面的函数是这样的,那么剩下的是什么:**?
在函数头中:
1 2 3 4 5 6 7 8 | >>> 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} |
在函数调用中:
1 2 3 4 5 | >>> 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} |
1 2 3 4 | def func(**stuff): print(stuff) func(one = 1, two = 2) |
将打印:
1 | {'one': 1, 'two': 2} |
1 2 3 4 5 6 7 8 | $ cat 2.py def k(**argv): print argv k(a=10, b = 20) $ python 2.py {'a': 10, 'b': 20} |
你也可以反转它。你可以用字典作为一套说明对于函数:
1 2 3 4 5 6 | def k(a=10, b=20): print a print b d={'a':30,'b':40} k(**d) |
将打印
1 2 | 30 40 |