适用于每个功能的装饰器

时间:2017-12-19 23:28:26

标签: python python-decorators

我想在每个函数调用上打印Hello World,我正在使用装饰器来实现这一点。

def hello_decorator(fn):
    def ret_fn(*args, **kwargs):
        print("Hello world")
        return fn(*args, **kwargs)
    return ret_fn

假设这导致函数错误输出,而该函数的未修饰版本工作正常,装饰器的问题可能是什么?问题不在于印刷,因为我可以删除它,问题仍然存在。

有没有更好的方法来包装函数并完全按照没有原型的方式调用它?

1 个答案:

答案 0 :(得分:0)

装饰者必须返回一个函数。

def hello_decorator(fn):
    def ret_fn(*args, **kwargs):
        print("Hello world")
        return fn(*args, **kwargs)
    return ret_fn