在任何python标准库包中,是否存在一个可调用程序,该程序在给定arg的情况下返回一个始终返回所述arg的可调用程序?
我正在寻找的基本上是以下函数的等效operator.itemgetter
:
def constant_return(return_value):
return lambda *args, **kwargs: return_value
我现在看到的主要用例是在装饰测试用例时将其用作unittest.mock.patch
的第二个参数
您可以使用partial
:执行类似操作
from functools import partial
def constant_return(return_value):
def constant_return_value(return_value):
return return_value
return partial(constant_return_value, return_value)
cr = constant_return(5)
cr()
# outputs 5
这将使constant_return返回一个带有嵌套函数和您传入的返回值的分部函数。当被调用时,返回的可调用函数将返回您最初传入的值。
或者更好的是,使用lambda:
def constant_return(return_value):
return partial(lambda x: x, return_value)
cr = constant_return(5)
cr()
# Outputs 5