使用多个解包的惯用方法

时间:2014-05-08 07:54:07

标签: python

我想在Python函数调用中进行多次解包...

我们说我有一个功能

def manhattan_dist(x1, y1, x2, y2):
    return abs(x1-x2) + abs(y1-y2)

使用"坐标"来调用它的Pythonic方法是什么?即假设

coord1 = (0, 0)
coord2 = (0, 0)

我希望能够像

一样打电话
manhattan_dist(*coord1, *coord2)

但这会产生语法错误(第二个星号)。

1 个答案:

答案 0 :(得分:3)

您可以使用+运算符:

manhattan_dist(*(coord1 + coord2))

请注意+仅在两个项目属于同一类型时才有效,以支持您可以使用的任何可迭代itertools.chain

from itertools import chain
manhattan_dist(*chain(coord1, coord2))