我想制作一个装饰器来捕获异常并充分记录它们。
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 类型,但调用它并打印答案?
您的装饰器需要返回一个函数,但它没有返回任何内容,因此“TypeError:'NoneType'对象不可调用”。你可以这样实现:
def logger(foo):
def fn():
try:
print foo()
except Exception as e:
print e
return fn
查看这个问题 https://stackoverflow.com/questions/739654/understanding-python-decorators有关如何编写/使用装饰器的一个很好的示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)