【问题标题】:Python decorator error?Python装饰器错误?
【发布时间】:2013-06-08 14:31:51
【问题描述】:

我尝试使用以下代码创建装饰器。

def outer():
    def inner():
        print 'inner called'
        return inner

foo = outer()
foo()

但它给出了错误

TypeError: 'NoneType' object is not callable

请解决我的问题。谢谢..

【问题讨论】:

  • 另外,作为装饰者,outer 应该将要装饰的函数作为参数。
  • 是的,这不是一个真正的装饰器,它实际上只是一个包装函数
  • 对不起,它真的是包装函数。

标签: python python-2.7 python-decorators


【解决方案1】:

我相信这是您想要的代码:

def outer():
    def inner():
        print 'inner called'
    return inner

foo = outer()
foo()

您的return 缩进太远

【讨论】:

  • inner 的范围是什么??
  • @GrijeshChauhan 它是 outer() 本地的
  • @GrijeshChauhan 或任何封闭函数
  • @GrijeshChauhan outer 没有终止,它只使用一次来创建inner,然后只调用innerinner 是一个单独的函数,恰好可以访问其范围
猜你喜欢
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2016-06-13
  • 1970-01-01
  • 2015-12-10
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多