logging
和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和文件。
pdb
Python的調試器pdb,讓程序以單步方式運行,可以隨時查看運行狀態
pdb.set_trace()這個方法也是用pdb,但是不需要單步執行,我們只需要import pdb,然后,在可能出錯的地方放一個pdb.set_trace(),就可以設置一個斷點. 運行代碼,程序會自動在pdb.set_trace()暫停并進入pdb調試環境,可以用命令p查看變量,或者用命令c繼續運行
如果要比較爽地設置斷點、單步執行,就需要一個支持調試功能的IDE