Python中如何處理常見報錯

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

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

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

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

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

比如兩種常見的語法錯誤 SyntaxError 和 IndentationError 以及它們產生的原因和相應的解決辦法。

首先我們來看看 SyntaxError 。

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

一、遺漏瞭標點符號。
二、關鍵字拼寫錯誤或遺漏。
三、變量名或函數名使用瞭關鍵字。

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

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

圖片總結一下:

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

比如兩種常見的縮進錯誤:

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

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

總結如下:

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

區分異常和錯誤的方法就需要我們去觀察終端的提示信息,一般情況下,異常的“錯誤消息”會顯示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(對象不可被迭代)

具體的解決方法可以結合下圖:

一句話總結:為瞭避免類型錯誤,你需要確定自己使用的數據類型是什麼(可以借助 type()),需要進行的操作是什麼,從而去確認是否需要使用函數來進行類型轉換。

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

最後,我們講瞭幾種操作文件過程中的常見異常。第一種是 ModuleNotFoundError 未找到模塊錯誤,是一種有關模塊的異常,解決這個異常的方法十分簡單,隻要你在導入模塊時仔細檢查模塊的拼寫是否正確即可。

第二種是 AttributeError 屬性錯誤 ,為瞭避免這種異常,我們在使用模塊中的方法時,需要先檢查拼寫是否正確,確認拼寫無誤後,再檢查模塊或庫中是否存在該方法或屬性。

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

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

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

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

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

總結如下:

 而實際上我們在寫代碼的過程中可能遇到的錯誤遠不止這些,課程也無法一一全部講到,所以大傢需要培養的是這種自己發現錯誤和解決錯誤的能力,這就需要我們不斷的嘗試以及學會到百度上搜索查閱資料來積累經驗瞭。

到此這篇關於Python中如何處理常見報錯的文章就介紹到這瞭,更多相關Python處理報錯內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: