【发布时间】:2012-02-09 22:17:21
【问题描述】:
我想制作一个装饰器,它可以捕获异常并充分记录它们。
def logger(foo):
try:
print foo()
except Exception as e:
print e
@logger
def d():
return 2/2
if __name__ == '__main__':
d()
我认为是对的,但是我运行它并出现这样的异常:
1
Traceback (most recent call last):
File "log.py", line 14, in <module>
d()
TypeError: 'NoneType' object is not callable
为什么解释器告诉我该函数是 None 类型,但调用它并打印答案?
【问题讨论】:
-
考虑阅读Wiki on decorators、PEP-0318,最后阅读this