【发布时间】:2020-10-14 21:50:04
【问题描述】:
我正在使用一个经常使用useful_function(obj) 的模块。我的问题是我希望useful_function 的行为与正常情况略有不同。目前,我正在使用以下方法来解决我的问题:
original_useful_function = useful_function
def useful_function(obj):
if meets_criteria(obj):
return my_desired_result(obj)
return original_useful_function(obj)
然后我可以继续我的工作,因为我知道useful_function 的每次调用都会按照我想要的方式运行。但是,我很好奇是否有更好的方法来做到这一点。
【问题讨论】:
-
我也在考虑装饰器。但是,我认为它不适合 OP 提出的问题,因为无论如何它都需要重新定义函数,或者直接调用装饰器,因此它具有与当前相同的间接级别。
-
您能提供一些上下文,更详细地了解您的特定用例吗?作为一个通用问题,这似乎很好,但细节可能会带来更优雅的解决方案。
-
@JohnKugelman 是的,虽然我总是担心添加上下文会使问题在某些用户的脑海中偏离主题。
-
"Pythonic" 的方式是遵循 Python 的禅宗,即 "显式优于隐式", "简单胜于复杂”,并且“可读性很重要”。因此,创建一个具有完全不同名称的全新函数并使用该函数。弄清楚发生了什么。
标签: python