示例用法:
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文档中的哪里解释了*?
发布于 2012-09-26 17:01:57
Expressions reference中记录了*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])或可迭代参数和位置参数的任何其他组合,前提是可迭代参数位于位置参数之后。
发布于 2021-03-25 23:15:54
只是简单地扩展未命名参数和命名参数的组合。
这是您要牢记的一般顺序:
def func(arg_1, ..., arg_N, *args, kwarg_1, ..., kwarg_M, **kwargs):
# do stuff
return True其中,在大多数典型情况下;
args是一个未命名的参数,
kwargs是一个列表,因此是一组未命名的参数,
kwarg_j是一个已命名的参数,
kwargs是一个字典,因此是一组已命名的参数。https://stackoverflow.com/questions/12555627
复制相似问题