是否可以解压缩列表或元组,使值可以用作函数参数?即,如何使第二行起作用?
f(1,2,3)
f(???([1,2,3]))
我目前正在手动执行此操作,例如:
tmp1, tmp2, tmp3 = [1,2,3]
f(tmp1,tmp2,tmp3)
context:我没有能力修改f(),但这是代码生成器的一部分,所以时髦的解决方案不是问题。
答案 0 :(得分:11)
是的,您可以使用*args
(splat)语法:
f(*[1, 2, 3])
请参阅call expressions documentation。
还有一个关键字参数等效,使用两颗星:
kwargs = {'foo': 'bar', 'spam': 'ham'}
f(**kwargs)
并且在函数签名中指定了catch-all参数的语法相同:
def func(*args, **kw):
# args now holds positional arguments, kw keyword arguments