是否可以使用单个数据结构传递给具有多个参数的函数?我想做类似以下的事情,但它似乎不起作用。
foo_bar = (123, 546)
def a(foo, bar):
print(foo)
print(bar)
是否可以执行以下操作:
a(foo_bar)
而不是:
a(foo_bar[0], foo_bar[1])
这样做的pythonic方式是什么?
答案 0 :(得分:16)
你想要的是:
a(*foo_bar)
有关详细信息,请参阅教程中的Unpacking Argument Lists ...但实际上没有比此更多的内容。
为完整起见,参考文档位于Calls:
如果语法
*expression
出现在函数调用中,expression
必须求值为iterable。来自此迭代的元素被视为它们是附加的位置参数;如果有位置参数x1,...,xN和expression
求值为序列y1,...,yM,这相当于一个带有M + N个位置参数x1,...,xN的调用,y1,...,yM。