解包参数:只有命名参数可以在 *expression 后跟随。

13 浏览
0 Comments

解包参数:只有命名参数可以在 *expression 后跟随。

下面的代码在Python中运行得很好:

def f(x,y,z): return [x,y,z]
a=[1,2]
f(3,*a)

a的元素被解包,就好像你调用了f(3,1,2),它返回[3,1,2]。太棒了!

但是我无法将a的元素解包到前两个参数中:

f(*a,3)

我期望它像f(1,2,3)一样调用,但是我得到了"SyntaxError: only named arguments may follow *expression"。我想知道为什么必须这样,并且是否有任何聪明的技巧可以在不使用临时变量的情况下将数组解包到参数列表的任意部分。

0