python装饰函数调用

标签 python wrapper decorator

是否可以使用 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/

相关文章:

python - 使用 numpy dtype 和转换器将 csv 列拆分为子列

python - Pandas map 专栏到位

Java 流的误解......一些澄清?

具有继承性的 Typescript 装饰器

Python - 在类声明中访问父类装饰器

javascript - javascript装饰器中的 `target`是什么

python - 将 result_type 与 pandas apply 函数一起使用

python - 属性错误: 'function' object has no attribute 'read'

jQuery 用 div 包装多个 id

java - 枚举值作为 Java 中对象的实例