2012-10-02 47 views
0

我想在的python2.5的Python 2.5和列表函数参数

有所建树

所以,我有我的功能

def f(a,b,c,d,e): 
    pass 

,现在我想调用该函数:(以python2.7我会做)

my_tuple = (1,2,3) 
f(0, *my_tuple, e=4) 

但是在python2.5中没有办法做到这一点。我在考虑申请()

apply(f, something magical here) 

#this doesn't work - multiple value for 'a'. But it's the only thing I came up with 
apply(f, my_tuple, {"a":0, "e":4}) 

你会怎么做?我希望将它内联,而不要将事情放在列表中。

回答

1

如果你愿意调剂的参数的顺序,那么你可以使用这样的事情:

>>> def f(a,b,c,d,e): 
... print a,b,c,d,e 
... 
>>> my_tuple = (1,2,3) 
>>> def apply(f, mid, *args, **kwargs): 
... return f(*args+mid, **kwargs) 
... 
>>> apply(f, my_tuple, 0, e=4) 
0 1 2 3 4 
>>> 
>>> apply(f, ('a', 'b'), '_', d='c', e='d') 
_ a b c d 
>>>