我使用this page查看装饰器(向下滚动到第9节),这两个示例工作正常。但是,我不喜欢嵌套函数的使用方式。这样一个简单的任务似乎需要付出额外的努力。对于第一个例子,使用outer()和inner()函数,我不能像这样简单地注释掉内部
def outer(some_func):
# def inner():
print("before some_func")
ret = some_func() # 1
return ret + 1
# return inner
def foo():
return 1
decorated = outer(foo) # 2
print(decorated())
因为Python提供了
TypeError:' int'对象不可调用
在print(decorated())行上。
我不确定这里发生了什么。有没有办法重写这个装饰器而不需要使用两个嵌套函数?我还想看看第二个例子,使用坐标对以及wrapper()和checker()函数是否也可以被重写以避免额外的功能。