+ -
当前位置:首页 → 问答吧 → 函数装饰器,不懂哪里弄错了

函数装饰器,不懂哪里弄错了

时间:2011-03-08

来源:互联网

  1. import time

  2. def wrapper(func):
  3.     start = time.clock()
  4.     func()
  5.     end =time.clock()
  6.     print "used:", end - start

  7. def timeit(arg1):
  8.     print "arg1:", arg1
  9.     return wrapper

  10. @timeit("hello world")
  11. def foo():
  12.     print 'in foo()'

  13. if __name__ == "__main__" :
  14.     foo()
复制代码
这里不就是相当于先调用timeit("hello world")然后返回1个wrapper函数,再调用wrapper(foo)么,为什么还会说'NoneType' object is not callable呢

作者: tweyseo   发布时间: 2011-03-08

没人帮看看么

作者: tweyseo   发布时间: 2011-03-08

是foo=wrapper(foo)

然后再foo()就报错了呗……

作者: Kabie   发布时间: 2011-03-08

def wrapper(func):
    def new_func():
        start = time.clock()
        func()
        end =time.clock()
        print "used:", end - start
    return new_func

作者: xiongharry   发布时间: 2011-03-08

谢谢

作者: tweyseo   发布时间: 2011-03-08