CIs*_*ies 2 python python-2.7 iterable-unpacking
根据此,我可以调用一个函数,N个参数与含有这些参数的元组,具有f(*my_tuple)。
有没有办法结合解包和解包变量?
就像是:
def f(x,y,z):...
a = (1,2)
f(*a, 3)
Run Code Online (Sandbox Code Playgroud)
您提供的代码 ( f(*a, 3)) 对 python 3 有效。对于 python 2,您可以通过添加额外值来创建新元组。然后解压新元组。
例如,如果您有以下功能f:
def f(x, y, z):
return x*y - y*z
print(f(1,2,3))
#-4
Run Code Online (Sandbox Code Playgroud)
尝试您的代码会导致 python 2 中的错误:
a = (1,2)
print(f(*a,3))
#SyntaxError: only named arguments may follow *expression
Run Code Online (Sandbox Code Playgroud)
所以只需创建一个新的tuple:
new_a = a + (3,)
print(f(*new_a))
#-4
Run Code Online (Sandbox Code Playgroud)
更新
我还应该添加另一个选项是在表达式之后传入一个命名参数*(如 中所述SyntaxError):
print(f(*a, z=3))
#-4
Run Code Online (Sandbox Code Playgroud)