Python - 你能编写没有嵌套函数的装饰器吗?

时间:2015-08-21 21:13:05

标签: python python-decorators

我使用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()函数是否也可以被重写以避免额外的功能。

0 个答案:

没有答案