2011-07-14 31 views
1

我有一個包含元組的元組。如何傳遞元組作爲函數的參數

EVENT_MAPPING = (
    (func1, (paramA1, paramA2, paramA3)), 
    (func2, (paramB1)), 
    (func3, (paramC1, paramC2)), 
) 

我遍歷第一個元組。我想調用第一個參數中包含的函數,第二個參數加上其他參數。例如,對於第一個元組:

func1(origin, paramA1, paramA2, paramA3) 

如果他們是沒有的「出身」參數,我可以有一個電話感謝:

args[0](args[1]) 

但與額外的參數(「原點」) ,我不能做那樣的事情。 我找到了一種方法做它,但它是沉重的:

call = tuple(list(args[1]).insert(0,origin)) 
args[0](call) 

有沒有更好的方式來做到這一點?

感謝您的幫助

回答

11

這樣,大概是:

for func, args in EVENT_MAPPING: 
    func(*args) 

的*提取物(擴大)內部的元組和它們傳遞給函數作爲參數。

0

如果要添加原點到指定參數時,這樣的事情應該工作:

for func, args in EVENT_MAPPING: 
    func(*(origin,)+args) 
1
for func, args in EVENT_MAPPING: 
    func(origin, *args) 
相關問題