2011-07-14 5 views
1

タプルを含むタプルがあります。関数のパラメータとしてタプルを渡す方法

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

最初のタプルに対して反復処理を行います。そして、私は最初のparamに含まれる関数を、2番目のparamと他のparamのargsで呼びたいと思います。例えば、最初のタプルのために:

args[0](args[1]) 

しかし、余分のparam(「起源」)で:「起源」のparam何が自分でない場合

func1(origin, paramA1, paramA2, paramA3) 

、私は感謝に電話を持つことができます私はそんなことはできません。私はそれを行う方法を見つけたが、それは重いです :

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) 
関連する問題