|
如果說寫代碼最害怕什么,那無疑是Bug。而對(duì)于新手來說,剛剛接觸編程,在享受寫代碼的成就感時(shí),往往也會(huì)被各式各樣的Bug弄得暈頭轉(zhuǎn)向。 ![]() 今天,我們就做了一期Python常見報(bào)錯(cuò)的分享,拯救你的代碼! 01 縮進(jìn)錯(cuò)誤(IndentationError) 在Python中,所有代碼都是通過正確的空格排列的。所以,無論是多出來空格,還是缺少空格,整個(gè)代碼都不會(huì)運(yùn)行,并且僅返回一個(gè)錯(cuò)誤函數(shù)。 Python代碼遵循PEP8空白規(guī)范,每一級(jí)縮進(jìn)使用4個(gè)空格。 錯(cuò)誤示例 a=1修正 02 Tab 和空格混用(TabError) 此類報(bào)錯(cuò)是由于同時(shí)使用制表符和空格進(jìn)行編碼導(dǎo)致的,tab鍵本質(zhì)上是制表符,而非縮進(jìn)符。由于不同文本編輯器中制表符代表的空格寬度不一,建議使用空格。 03 語法錯(cuò)誤(SyntaxError) 語法錯(cuò)誤的原因包含下列三種:
很多情況下是由于字符串兩邊的引號(hào)不統(tǒng)一。 錯(cuò)誤示例 print( 'hello', 'world')錯(cuò)誤原因:逗號(hào)為中文逗號(hào) 報(bào)錯(cuò)信息:SyntaxError: invalid character inidentifier 錯(cuò)誤原因:圓括號(hào)沒有成對(duì)出現(xiàn) if name =='A'錯(cuò)誤原因:忘記在if/elif/else/while/for/def/class等語句末尾添加冒號(hào) 報(bào)錯(cuò)信息:SyntaxError:invalid syntax 03 變量名錯(cuò)誤(NameErro) 變量名錯(cuò)誤是最普通也是最常會(huì)遇到的內(nèi)建報(bào)錯(cuò)類型,經(jīng)常會(huì)出現(xiàn)在Python變量命名上,如果找不到變量就會(huì)引發(fā)NameError。關(guān)于變量名的規(guī)則,需要牢記以下幾條:
出現(xiàn)變量名錯(cuò)誤,可以查看變量是否賦值,是否存在大小寫不統(tǒng)一或者變量名寫錯(cuò)了的情況,找到后加以修正。 錯(cuò)誤示例 05 索引錯(cuò)誤(IndexError) 索引是項(xiàng)目在數(shù)組或列表中的位置,當(dāng)我們嘗試從列表中訪問元素或從列表中不存在的索引中訪問元組時(shí),就會(huì)發(fā)生這種異常。 例如,有一個(gè)包含10個(gè)元素的列表,索引在0到9之間,如果試圖訪問索引10或11或更多的元素,就會(huì)產(chǎn)生IndexError。 錯(cuò)誤示例 a = [1,2,3]06 鍵錯(cuò)誤(KeyError) 在讀取字典中的key和value時(shí),如 果key不存在,就會(huì)觸發(fā)KeyError錯(cuò)誤。 錯(cuò)誤示例 07 類型錯(cuò)誤(TypeError) 在程序中使用不正確或不受支持的對(duì)象類型時(shí),會(huì)引發(fā)該錯(cuò)誤。如果嘗試調(diào)用不可調(diào)用的對(duì)象或通過非迭代標(biāo)識(shí)符進(jìn)行迭代,也會(huì)引發(fā)此錯(cuò)誤。 錯(cuò)誤示例 age=1808 屬性錯(cuò)誤(AttributeError) 特性引用和賦值失敗時(shí)會(huì)引發(fā)屬性錯(cuò)誤。 此類錯(cuò)誤的原因是嘗試訪問未知的對(duì)象屬性,換句話說就是找不到對(duì)應(yīng)對(duì)象的屬性??梢詸z查類中構(gòu)造函數(shù)__init__()是否寫正確,左右兩邊各兩條下劃線。 對(duì)于初學(xué)的小伙伴來說,代碼經(jīng)常出現(xiàn)Bug并不代表著你學(xué)得不好。若是將一個(gè)個(gè)Bug看作游戲里小怪,那么消滅Bug的過程又何嘗不是升級(jí)的過程呢? 所以,努力加油吧!消滅Bug! |
|
|