我想在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)
但这会产生语法错误(第二个星号)。
答案 0 :(得分:3)
您可以使用+
运算符:
manhattan_dist(*(coord1 + coord2))
请注意+
仅在两个项目属于同一类型时才有效,以支持您可以使用的任何可迭代itertools.chain
:
from itertools import chain
manhattan_dist(*chain(coord1, coord2))