我想在每个函数调用上打印Hello World,我正在使用装饰器来实现这一点。
def hello_decorator(fn):
def ret_fn(*args, **kwargs):
print("Hello world")
return fn(*args, **kwargs)
return ret_fn
假设这导致函数错误输出,而该函数的未修饰版本工作正常,装饰器的问题可能是什么?问题不在于印刷,因为我可以删除它,问题仍然存在。
有没有更好的方法来包装函数并完全按照没有原型的方式调用它?
答案 0 :(得分:0)
装饰者必须返回一个函数。
def hello_decorator(fn):
def ret_fn(*args, **kwargs):
print("Hello world")
return fn(*args, **kwargs)
return ret_fn