Python3:用于解压缩列表的带星号的表达式
示例用法:Python3:用于解压缩列表的带星号的表达式,python,python-3.x,argument-unpacking,Python,Python 3.x,Argument Unpacking,示例用法: 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 python文档中的哪里解释了*?调用约定记录在: 如果语法*表达式出现在函数调用中,表达式的计算结果必须为iterable。此iterable中的元素被视为附加的位置参数;如果存
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
python文档中的哪里解释了
*
?调用约定记录在:
如果语法*表达式
出现在函数调用中,表达式
的计算结果必须为iterable。此iterable中的元素被视为附加的位置参数;如果存在位置参数x1,…,xN和表达式
的计算结果为序列y1,…,yM,则这相当于使用M+N位置参数x1,…,xN,y1,…,yM的调用
因此,由于您使用了[1,2,3,4]
作为表达式,这是一个iterable,并且没有其他位置参数,因此它被视为M=0和N=4的调用,总共有4个位置参数
因此,您也可以将函数调用为
f(1,2,*[3,4])
或iterable和positional参数的任何其他组合,只要iterable位于positional参数之后。只是对未命名参数和命名参数组合的简单扩展的一个补充
这是您要记住的一般顺序:
def func(arg_1, ..., arg_N, *args, kwarg_1, ..., kwarg_M, **kwargs):
# do stuff
return True
其中,在大多数典型情况下
- 每个
都是一个未命名的参数arg_i
是一个列表,因此是一组未命名的参数args
- 每个单独的
都是一个命名参数kwarg_j
是一个字典,因此是一组命名参数kwargs