可调用,返回python标准库中的常量



在任何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

最新更新