2013-02-21 46 views
1

假设我有一个函数def foo(A, B)使用不同数量的变量传递函数

现在我有另一个功能bar(func),其中func是一个函数,它只接受一个变量。我想通过foo作为func,但第二个变量B总是固定为300.我该怎么做?

+0

搜索“部分应用程序”。 – Hyperboreus 2013-02-21 04:20:06

回答

3

您使用lambda

bar(lambda x: foo(x,300)) 

基本上,

func = lambda x: x*x 

是或多或少相当于:

def func(x): 
    return x*x 

所以在这种情况下,我们使用的东西或多或少相当于:

def new_func(x): 
    return foo(x,300) 

然后我们将new_func的等价物传递给bar

2

LAMBDA是最容易的,但你也可以使用更复杂的情况functools.partial:

import functools 

bar(functools.partial(foo, B=300))