一次寫完代碼程序并能夠正常運行的概率很小很小,總會有各種各樣的錯誤bug需要處理。有的報錯簡單,看看報錯信息簡單修改一下就可以了。
python 異常、但是有的報錯很復雜,特別是一些復雜長代碼,需要我們定位到錯誤的位置,需要判斷是什么變量出現了問題,因此我們除了會寫代碼之外,還需要會解決常見的錯誤,那么具體有哪些處理錯誤的方法呢,具體簡單介紹以下幾塊內容:
一.異常處理
基本語法:
try:
#要運行別的代碼
except :
#如果在try部份引發了'xxxError'異常就會執行這一步語句
except ,:
#如果上一個except語句引發了'xxxError'異常,獲得附加的數據,并執行這一部分的語句
else:
#如果沒有出現異常要執行的代碼
finally:
#無論發生異常與否,最終都要執行的代碼
比如:
try:
print('執行try部分語句:')
i = input('輸入一個除數:')
result = 10 / i
print('result:', result)
except ZeroDivisionError:
print("除數不能為0")
else:
print("成功輸出結果")
finally:
print("無論發生異常與否,我都會在這里")
當然這里的except后面可以省略錯誤名稱,但是不建議。省略就意味著只要有錯誤就執行這一部分代碼,比如我在這里輸入一個字母a,明明錯誤應該是除數不能為字符串,這里仍然說除數不能為0是不是就不正確了,所以盡量寫出錯誤的名稱。
在這個語法中,try是核心成員,意思是不能沒有try,其他的內容都可以或多或少的省略掉,比如try-except,try-finally等。
二.debug調試
調試有很多種方法,這里列出主要的幾種方法:
1.用print語句
用print()語句把可能有問題的每一個過程都進行輸出,就像上面異常處理當中的一樣,這種方法簡單粗暴,但是在處理完所有的錯誤之后運行可能會有很多的無用信息,所以最終還要回來刪掉這些print語句,于是有了下面的方法。
2.斷言(assert)
在這里“斷言”是一種程序設計的專業術語,是一種放在程序中的一階邏輯(如一個結果為真或是假的邏輯判斷式),目的是為了標示與驗證程序開發者預期的結果。凡是用print()來輔助查看的地方都可以用斷言(assert)來進行替代。
但是在程序中如果導出都是assert也并沒有比print()好到哪里去,不過可以通過社吹Python解釋的-o參數來啟用或停用assert。
3.logging
把print()替換成logging是第三種方式,和assert比,logging不會拋出錯誤,而且還可以輸出到文件中形成一個日志文件。
logging的好處是,在運行代碼中不會拋出錯誤,而是把錯誤輸出到文件中,還可以指定記錄信息的級別,有debug、info、warning、error等,且只會有一個生效。
4.pdb
第四種方式是啟動Python的調試器pdb,讓程序以單步方式運行,可以隨時查看運行的狀態,就像使用jupyter notebook來一行一行運行代碼一樣,但是jupyter notebook的功能會更強大一些。
5.IDE
利用一些支持調試功能的IDE工具來進行調試,比如VS code,PyCharm等
6.jupyter notebook
最喜歡的方式就是使用jupyter notebook來進行調試代碼,可以自己設置一次運行多少行代碼,能夠準確定位到具體的錯誤位置,也是非常推薦的一個方式來進行代碼的調試。
最后,代碼調試是一個非常需要耐心的過程,也是體現學習程度的一個很重要的技能,希望大家能夠好好掌握~
END.
本文整理自愛數據學院中的問答
更多精彩問答,進入下方社區網站查看
http://www.lovedata.cn/invitation
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态