python作為一種腳本語(yǔ)言,很多時(shí)候我們習(xí)慣于它的簡(jiǎn)潔,習(xí)慣于它的修改就能看到結(jié)果的特性。對(duì)于python的調(diào)試,有很多種方式,今天我們就來(lái)簡(jiǎn)單介紹下。
對(duì)于腳本語(yǔ)言,調(diào)試最簡(jiǎn)單的方式就是打印輸出,而print函數(shù)就可以輸出各種類(lèi)型變量,配合著格式化輸出,我們可以打印出程序運(yùn)行過(guò)程中各個(gè)變量的狀態(tài)值。
使用這種方式的好處是我們不需要引入其它包,我們只需要使用簡(jiǎn)單的print就可以調(diào)試我們的程序,當(dāng)然,它的缺點(diǎn)也很明顯,有時(shí)候?yàn)榱苏{(diào)試一些變量,我們不得不寫(xiě)很多print語(yǔ)句,而且有時(shí)候?yàn)榱烁鼉?yōu)雅地顯示數(shù)據(jù),我們不得不寫(xiě)很多代碼。
Icecream
這是一個(gè)調(diào)試輸出插件,相比于print函數(shù),它可以自動(dòng)優(yōu)雅地輸出各種變量類(lèi)型,它會(huì)輸出變量的位置,它可以輸出函數(shù)的值,它還可以將值輸出寫(xiě)入日志中。
通過(guò)引入icecream包,我們就可以在程序中更加簡(jiǎn)單地優(yōu)雅地輸出調(diào)試變量和函數(shù)的值,但是它和print函數(shù)一樣,沒(méi)有解決調(diào)試的侵入性問(wèn)題,會(huì)產(chǎn)生調(diào)試代碼。
PySnooper
前面我們提到了print和icecream都會(huì)產(chǎn)生調(diào)試代碼,當(dāng)調(diào)試結(jié)束之后我們還需要?jiǎng)h除它們,那么有沒(méi)有一種非侵入式地調(diào)試方式呢,答案是肯定的,那就是pysnooper。
pysnooper通過(guò)使用裝飾器,可以非侵入式地調(diào)試代碼,并且它輸出的信息很詳細(xì),我們可以清楚地看到函數(shù)的調(diào)用層級(jí),可以清楚地看到變量值的變化過(guò)程。并且它是支持調(diào)試信息的輸出位置配置,默認(rèn)是在控制臺(tái)輸出,當(dāng)然,我們也可以在日志中輸出調(diào)試。
pdb
我們知道調(diào)試c語(yǔ)言的時(shí)候有g(shù)db,而調(diào)試python的時(shí)候,我們有pdb,它和gdb而很類(lèi)似,我們可以進(jìn)行斷點(diǎn)設(shè)置,可以進(jìn)行逐行調(diào)試,可以進(jìn)入斷點(diǎn),可以設(shè)置修改變量值,配合著IDE,可以說(shuō)pdb是我們最常用的,也是最方便的調(diào)試方法。
通過(guò)設(shè)置斷點(diǎn),我們完全不需要寫(xiě)任何代碼就可以查看運(yùn)行中變量的值,通過(guò)逐行調(diào)試,也有助于我們分析代碼。
總結(jié)
無(wú)論何種調(diào)試方式,選擇一個(gè)適合自己的最重要,畢竟把代碼寫(xiě)好才是最重要的。
以上內(nèi)容為大家介紹了python調(diào)試的幾種方式,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.dietsnews.net/