如果我有这样的功能:def f(a,b,c,d):
print a,b,c,d
那么为什么这样做:f(1,2,3,4)
f(*[1,2,3,4])
但不是这个:f(*[1,2] , *[3,4])
f(*[1,2] , *[3,4])
^
SyntaxError: invalid syntax
是吗?
编辑:
有关信息,最初的问题是替换函数包装器中的一个参数。我想替换输入的*参数的给定成员,并尝试如下操作:def vectorize_pos(f,n=0):
'''
Decorator, vectorize the processing of the nth argument
:param f: function that dont accept a list as nth argument
'''
def vectorizedFunction(*args,**kwargs):
if isinstance(args[n],list):
return map(lambda x : f( *(args[:n]) , x , *(args[n+1,:]), **kwargs),args[n])
else:
return f(*args,**kwargs)
return vectorizedFunction
这就是问题的由来。我知道还有其他方法可以做同样的事情,但我只想知道为什么解包一个序列有效,而不是更多。