示例使用:
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文档在哪里*
解释?
示例使用:
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文档在哪里*
解释?
*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])
可迭代参数和位置参数的任何其他组合,前提是可迭代参数位于位置参数之后。
只是非常简单地扩展了未命名和命名参数的组合。
这是您要记住的一般顺序:
def func(arg_1, ..., arg_N, *args, kwarg_1, ..., kwarg_M, **kwargs):
# do stuff
return True
哪里,在最典型的情况下;
arg_i
都是一个未命名的参数,args
是一个列表,因此是一组未命名的参数,kwarg_j
都是一个命名参数,kwargs
是一个字典,因此是一组命名参数。