2014-05-08 64 views
0

我想要做的多解包在Python中的函數調用...慣用的方式解壓

比方說,我有一個函數

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

什麼是調用的Python的方式它與「座標」?即假設

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

我希望能夠調用它像

manhattan_dist(*coord1, *coord2) 

但是,這產生了一個語法錯誤(第二星號)。

回答

3

可以使用+操作:

manhattan_dist(*(coord1 + coord2)) 

注意+只會工作,如果這兩個項目都是同一類型的,支持任何可迭代可以使用itertools.chain

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