当需要其他变量时,如何解压元组?

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)

pau*_*ult 5

您提供的代码 ( 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)