是否可以使用 python 装饰器包装函数调用?
我不想为模块的每个功能单独实现包装器。
我想要一个类似的东西
def a(num):
return num
@double_the_value
a(2)
返回 4
而无需访问 a
的实现。
全局包装器会像
def multiply(factor, function, *args, **kwargs):
return factor * function(*args, **kwargs)
在这种情况下是更好的选择吗?
最佳答案
虽然 @decorator
语法只能与函数或类的定义结合使用,但装饰器成为语言功能之前的语法可以满足您的要求:
from module import myfunc
myfunc = double_decorator(myfunc)
x = myfunc(2) # returns 4
延伸阅读:Marty Alchin 在 Apress 的 Pro Python 一书中有一个非常详细的装饰器部分。
关于python装饰函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370642/