Python 3:用星号表达来解压缩列表
我的例子是:
>>> def f(a, b, c, d): print(a, b, c, d, sep = '&')
>>> f(1,2,3,4)
1&2&3&4
>>> f(*[1, 2, 3, 4])
1&2&3&4
为了彻底理解它,我想查阅有关'*'的文档。
你能建议我在哪里看?
表达式参考中记录了*args
调用约定:
如果语法*expression
出现在函数调用中,则expression
必须计算为可迭代的。 来自这个迭代器的元素被视为它们是附加的位置参数; 如果存在位置参数x1,...,xN,并且expression
计算为序列y1,...,yM,则这相当于具有M + N个位置参数x1,...,xN,y1,...的调用。 ..,yM。
因此,由于您使用[1, 2, 3, 4]
作为可迭代的表达式,并且没有其他位置参数,因此它被视为M = 0和N = 4的调用,总计为4个位置参数。
因此,您可以将函数作为f(1, 2, *[3, 4])
或任何其他可迭代和位置参数的组合来提供,只要迭代次数在定位之后。