假设我有一个函数def foo(A, B)
。
现在我有另一个函数bar(func)
,其中func
是一个只接受一个变量的函数。我想传入foo
as 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
to bar
。
Lambda 是最简单的,但您也可以将 functools.partial 用于更复杂的情况:
import functools
bar(functools.partial(foo, B=300))