在函数定义中*
用于在函数调用中收集元组中的所有位置参数*
解压一个可迭代对象并将其项目作为位置参数传递。
If by *a*b
你正在尝试解压两个迭代器/迭代器a
and b
那么正确的方法是:
>>> a = [1, 2, 4]
>>> b = 'foo'
>>> from itertools import chain
def func(*x):
print x
...
>>> func(*chain(a,b)) #chain will work for both iterators and iterables
(1, 2, 4, 'f', 'o', 'o')
if both a
and b
具有相同类型并且可迭代,那么您还可以使用:
>>> a = [1, 2, 4]
>>> b = [0,1]
>>> func(*(a + b))
(1, 2, 4, 0, 1)