logging
把 print() 替换为 logging 是第3种方式,和 assert 比, logging 不会抛出错误,而且可以输出到文件:
import logging
s = '0'
n = int(s)
logging.info('n = %d' % n)
print(10 / n)
logging.info() 就可以输出一段文本。运行,发现除了 ZeroDivisionError ,没有任何信息。怎么回事?
别急,在 import logging 之后添加一行配置再试试:
import logging
logging.basicConfig(level=logging.INFO)
看到输出了:
$ python3 err.py
INFO:root:n = 0
Traceback (most recent call last):
File "err.py", line 8, in <module>
print(10 / n)
ZeroDivisionError: division by zero
这就是 logging 的好处,它允许你指定记录信息的级别,有 debug , info , warning , error 等几个级别,当我们指定 level=INFO 时, logging.debug 就不起作用了。同理,指定 level=WARNING 后, debug 和 info 就不起作用了。这样一来,你可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。
logging 的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件。