假设我有一个函数def foo(A, B)
。使用不同数量的变量传递函数
现在我有另一个功能bar(func)
,其中func
是一个函数,它只接受一个变量。我想通过foo
作为func
,但第二个变量B
总是固定为300.我该怎么做?
假设我有一个函数def foo(A, B)
。使用不同数量的变量传递函数
现在我有另一个功能bar(func)
,其中func
是一个函数,它只接受一个变量。我想通过foo
作为func
,但第二个变量B
总是固定为300.我该怎么做?
您使用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
。
LAMBDA是最容易的,但你也可以使用更复杂的情况functools.partial:
import functools
bar(functools.partial(foo, B=300))
搜索“部分应用程序”。 – Hyperboreus 2013-02-21 04:20:06