根据 this ,我可以使用包含这些参数的元组调用一个带有 N 个参数的函数,使用 f(*my_tuple)。
有没有办法结合解包和解包变量?
类似于:
def f(x,y,z):...
a = (1,2)
f(*a, 3)
请您参考如下方法:
您提供的代码 (f(*a, 3)) 对 python 3 有效。对于 python 2,您可以通过添加额外的值来创建一个新的元组。然后解压新的元组。
例如,如果您有以下函数 f:
def f(x, y, z):
return x*y - y*z
print(f(1,2,3))
#-4
尝试您的代码会导致 python 2 出错:
a = (1,2)
print(f(*a,3))
#SyntaxError: only named arguments may follow *expression
所以只需创建一个新的元组:
new_a = a + (3,)
print(f(*new_a))
#-4
更新
我还应该添加另一个选项,即在 * 表达式之后传递一个 named 参数(如 SyntaxError 中所述):
print(f(*a, z=3))
#-4
