溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python中怎么處理常見報錯問題

發(fā)布時間:2022-03-04 10:11:29 來源:億速云 閱讀:163 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹Python中怎么處理常見報錯問題,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

1.首先是常見的語法錯誤。
2.然后是基礎(chǔ)語法中的常見異常。
3.最后是操作文件過程中的常見異常,這部分也是重難點知識。

這是我們在終端比較常見的報錯信息:

Python中怎么處理常見報錯問題

 按照 Python 官方文檔的定義,我們在終端見到的“錯誤消息”至少可以被分為兩類:語法錯誤(syntax errors)和異常(exceptions) 。

語法錯誤(syntax errors)是初學(xué)者最容易犯的錯誤,簡單來說就是代碼不符合 Python 的基本語法規(guī)范而導(dǎo)致程序出了問題。 

當(dāng)你的代碼完全符合 Python 的語法規(guī)范后,就該嘗試運行程序了。但在程序運行過程中,還是有可能會發(fā)生問題,我們把這類問題稱為異常(exceptions)。

比如兩種常見的語法錯誤 SyntaxError 和 IndentationError 以及它們產(chǎn)生的原因和相應(yīng)的解決辦法。

首先我們來看看 SyntaxError 。

第一種:SyntaxError: invalid syntax(無效語法),這是語法錯誤中最常見的一種了,通常是由下面幾種情況引起的:

一、遺漏了標(biāo)點符號。
二、關(guān)鍵字拼寫錯誤或遺漏。
三、變量名或函數(shù)名使用了關(guān)鍵字。

第二種:SyntaxError: invalid character in identifier(標(biāo)識符中有無效字符),這種錯誤一般是由于代碼里使用了大量中文符號,比如中文括號,中文逗號,中文冒號和中文引號。這有可能是你在寫代碼時頻繁地切換中英文輸入法所造成的。

第三種:SyntaxError: EOL while scanning string literal(檢查到不完整的字符串),這種情況通常是因為遺漏了字符串兩邊的引號,或者混用了引號(即字符串兩邊的引號不統(tǒng)一)。解決辦法也很簡單,仔細(xì)檢查字符串兩頭的引號是否有遺漏,而且需要記住,單引號和單引號匹配,雙引號和雙引號匹配,三引號和三引號匹配。

圖片總結(jié)一下:

Python中怎么處理常見報錯問題

 第二個要介紹的常見語法錯誤就是 IndentationError,即縮進(jìn)錯誤。 在 Python 中,冒號下面的縮進(jìn)會幫助程序區(qū)分代碼之間的層次,這些不同的層次代表了代碼運行的邏輯及先后順序。但如果在需要縮進(jìn)的語句下面沒有使用正確的縮進(jìn)層級,甚至沒有使用縮進(jìn),程序就會報錯。

比如兩種常見的縮進(jìn)錯誤:

第一種:IndentationError: expected an indented block(需要縮進(jìn)的代碼塊),這種多半是由于某些需要縮進(jìn)的地方?jīng)]有縮進(jìn)導(dǎo)致的,修復(fù)這種縮進(jìn)錯誤的方法也十分簡單 —— 對癥下藥,理清代碼的運行順序與邏輯,在應(yīng)該縮進(jìn)的地方(例如:if 條件判斷,for 循環(huán),while 循環(huán),def 函數(shù)定義,class 類的創(chuàng)建)加入縮進(jìn)即可。

第二種:IndentationError: unindent does not match any outer indentation level(縮進(jìn)內(nèi)容不匹配任何一個層級),這種主要是因為某一行的縮進(jìn)沒有和其他位置對齊使得程序無法找到匹配的代碼塊導(dǎo)致的,解決辦法就需要我們理清代碼塊的層級并將縮進(jìn)對齊。

總結(jié)如下:

Python中怎么處理常見報錯問題

 接著我們來看看基礎(chǔ)語法中常見的異常,第一個要介紹的是基礎(chǔ)語法中常見的異常 TypeError,即類型錯誤。 

區(qū)分異常和錯誤的方法就需要我們?nèi)ビ^察終端的提示信息,一般情況下,異常的“錯誤消息”會顯示Traceback (most recent call last),而語法錯誤就不會顯示。 

下面列舉三種較為常見的類型錯誤:

第一種:TypeError: unsupported operand type(s) for …(不支持的運算)

第二種:TypeError: can only concatenate str (not "int") to str (只能用字符串拼接字符串)

第三種:TypeError: 'xxx' object is not iterable(對象不可被迭代)

具體的解決方法可以結(jié)合下圖:

Python中怎么處理常見報錯問題

一句話總結(jié):為了避免類型錯誤,你需要確定自己使用的數(shù)據(jù)類型是什么(可以借助 type()),需要進(jìn)行的操作是什么,從而去確認(rèn)是否需要使用函數(shù)來進(jìn)行類型轉(zhuǎn)換。

第二種異常是IndexError ,這個異常,和列表取值有關(guān)。 出現(xiàn)頻率較高的索引錯誤是 IndexError: list index out of range(索引超出了范圍),在列表中使用索引取值時,一定要確保索引在正確的范圍區(qū)間內(nèi)。

最后,我們講了幾種操作文件過程中的常見異常。第一種是 ModuleNotFoundError 未找到模塊錯誤,是一種有關(guān)模塊的異常,解決這個異常的方法十分簡單,只要你在導(dǎo)入模塊時仔細(xì)檢查模塊的拼寫是否正確即可。

第二種是 AttributeError 屬性錯誤 ,為了避免這種異常,我們在使用模塊中的方法時,需要先檢查拼寫是否正確,確認(rèn)拼寫無誤后,再檢查模塊或庫中是否存在該方法或?qū)傩浴?/p>

第三種是 FileNotFoundError 文件找不到的錯誤,為了避免這種異常,我們需要按照路徑找到對應(yīng)的文件或文件夾,檢查文件或文件夾名是否正確。

最后一種是 UnicodeDecodeError 即編碼解碼錯誤,它也是 open() 函數(shù)的另一個參數(shù) encoding 會引發(fā)的異常,之前課程講的寫法是 encoding = 'utf-8',這是因為,大部分工作場景的文件編碼格式都是 'utf-8'。但如果你需要使用別人分享的代碼時,很有可能會因為你們之間使用了不同的編碼格式而引發(fā)異常。

以后遇到這樣的異常,有兩種解決方法:

第一種,先利用 VSCode 等軟件去查看文件的編碼格式,然后再將文件的編碼格式修改為你在代碼中寫的編碼格式即可。

第二種,還是先在 VSCode 里面查看文件的編碼格式,然后將代碼中的 encoding 參數(shù)改為該文件的編碼格式即可。

總結(jié)如下:

Python中怎么處理常見報錯問題

 而實際上我們在寫代碼的過程中可能遇到的錯誤遠(yuǎn)不止這些,課程也無法一一全部講到,所以大家需要培養(yǎng)的是這種自己發(fā)現(xiàn)錯誤和解決錯誤的能力,這就需要我們不斷的嘗試以及學(xué)會到百度上搜索查閱資料來積累經(jīng)驗了。

以上是“Python中怎么處理常見報錯問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI