2013-04-19 56 views
2

是否可以使用單個數據結構傳遞到具有多個參數的函數?我想要做類似下面的事情,但它似乎不起作用。使用數據結構傳遞多個參數

foo_bar = (123, 546) 

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

是否有可能做類似以下內容:

a(foo_bar) 

代替:

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

什麼是這樣做的Python的方式?

回答

16

你想要的是:

a(*foo_bar) 

Unpacking Argument Lists在本教程的詳細信息...但真的沒有更給它莫過於此。

爲了完整起見,參考文檔是Calls

如果語法*expression出現在函數調用,expression必須計算爲一個迭代。來自這個迭代器的元素被視爲它們是附加的位置參數;如果存在位置參數x1,...,xN,並且expression評估爲序列y1,...,yM,則這相當於具有M + N個位置參數x1,...,xN,y1,...的調用。 ..,yM。

+1

請參閱http://stackoverflow.com/questions/817087/call-a-function-with-argument-list-in-python –