logging
和assert比,logging不會(huì)拋出錯(cuò)誤壹粟,而且可以輸出到文件:
import logging s = '0' n = int(s) logging.info('n = %d' % n) print(10 / n)
logging.info()就可以輸出一段文本。運(yùn)行苛吱,發(fā)現(xiàn)除了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的好處,它允許你指定記錄信息的級(jí)別票彪,有debug红淡,info,warning降铸,error等幾個(gè)級(jí)別在旱,當(dāng)我們指定level=INFO時(shí),logging.debug就不起作用了推掸。同理桶蝎,指定level=WARNING后,debug和info就不起作用了谅畅。這樣一來俊嗽,你可以放心地輸出不同級(jí)別的信息,也不用刪除铃彰,最后統(tǒng)一控制輸出哪個(gè)級(jí)別的信息绍豁。
logging的另一個(gè)好處是通過簡(jiǎn)單的配置,一條語句可以同時(shí)輸出到不同的地方牙捉,比如console和文件竹揍。
pdb
Python的調(diào)試器pdb敬飒,讓程序以單步方式運(yùn)行,可以隨時(shí)查看運(yùn)行狀態(tài)
pdb.set_trace()這個(gè)方法也是用pdb芬位,但是不需要單步執(zhí)行无拗,我們只需要import pdb,然后昧碉,在可能出錯(cuò)的地方放一個(gè)pdb.set_trace()英染,就可以設(shè)置一個(gè)斷點(diǎn). 運(yùn)行代碼,程序會(huì)自動(dòng)在pdb.set_trace()暫停并進(jìn)入pdb調(diào)試環(huán)境被饿,可以用命令p查看變量四康,或者用命令c繼續(xù)運(yùn)行
如果要比較爽地設(shè)置斷點(diǎn)、單步執(zhí)行狭握,就需要一個(gè)支持調(diào)試功能的IDE