2

是否可以使用单个数据结构传递给具有多个参数的函数?我想做类似以下的事情,但它似乎不起作用。

foo_bar = (123, 546)

def a(foo, bar):
    print(foo)
    print(bar)

是否可以执行以下操作:

a(foo_bar)

代替:

a(foo_bar[0], foo_bar[1])

这样做的pythonic方式是什么?

4

1 回答 1

16

你想要的是:

a(*foo_bar)

有关详细信息,请参阅教程中的拆包参数列表……但实际上没有比这更多的了。

为了完整起见,参考文档位于Calls中:

如果语法*expression出现在函数调用中,则expression必须计算为可迭代。来自这个可迭代的元素被视为附加的位置参数;如果有位置参数 x1, ..., xN,并且expression计算结果为序列 y1, ..., yM,则这等效于使用 M+N 个位置参数 x1, ..., xN, y1, .. 的调用., 是的。

于 2013-04-19T00:09:42.723 回答