传递函数以使用不同数量的变量

时间:2013-02-21 04:19:19

标签: python function

假设我有一个函数def foo(A, B)

现在我有另一个函数bar(func),其中func是一个只接受一个变量的函数。我希望将foo作为func传递,但第二个变量B始终固定为300.我该怎么做?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

Lambda是最简单的,但您也可以使用functools.partial来处理更复杂的情况:

import functools

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