Python 中的縮進錯誤:原因、解決方法、好處

已發表: 2021-05-26

作為一種解釋型、高級和通用的編程語言,Python 越來越多地被譽為編程世界中最有前途、最領先和新興的平台。 如果沒有其巧妙的設計理念,Python 什麼都不是。

一個關鍵特徵是強調顯著使用顯著縮進來增強代碼可讀性。 下面突出顯示的插圖將 Python 的設計理念的堡壘簡要概述為二十句格言,由長期 Pythoneer 的 Tim Peters 提到,他最終成為 Python 最多產和最頑強的核心開發人員之一。

目錄

Python 簡介

在深入研究 Python 中縮進錯誤背後的具體技術之前,我們必須熟悉 Python 的基礎知識和縮進的必要性。 這樣做不僅可以幫助您更好地了解錯誤本身,還可以深入了解程序員通過有效選擇解決錯誤而獲得的優勢。

Python 作為一種多範式編程語言的誕生可以追溯到 1991 年。從那時起,程序員不斷調整 Python 的核心線框,以適應一系列用戶特定的需求,例如數據科學以及 Web 和移動開發。

現在,我們都知道,試圖理解難以辨認的筆跡是非常棘手的,而且常常令人憤怒。 同樣,不可讀和非結構化的代碼是簡單明了的,在編程世界中是不可接受的。 這就是 PEP 或 Python 增強提案的概念來拯救程序員的地方。 Python 社區的 PEP 類似於為普通大眾共享的 Google Doc。

這是一個不斷更新的描述性任務,它讓 Python 編程社區全面了解特性和更新,以提高代碼的可讀性。 Guido van Rossum、Barry Warsaw 和 Nick Coghlan 在 2001 年將 PEP 8 稱為 Python 的樣式代碼。

什麼是縮進?

眾所周知,Python 是一種過程語言,因此,Python 中的縮進用於將單個代碼分隔為可識別的功能相似語句組。 大多數編程語言,包括 C、C++ 和 JAVA,都使用花括號“{}”來定義代碼塊。 Python 標誌著這種設計的偏離,並且更喜歡使用縮進。

縮進的語法

根據 PEP 8 空白倫理概述的約定,每個新的迭代(即代碼塊)都應該以縮進開始,代碼的結尾應該是第一行沒有縮進。 執行縮進的常見做法是四個空格或一個製表符,其中區域在很大程度上優於製表符。

如前所述,行首的前導空格決定了行的縮進級別。 要對特定代碼塊的語句進行分組,您必須增加縮進級別。 同樣,要關閉分組,您必須降低縮進級別。

結帳: 42 個令人興奮的 Python 項目主題和想法

Python中縮進錯誤的原因

“縮進錯誤:需要縮進塊”不區分用戶。 無論您是 Python 編程的新手還是經驗豐富的軟件開發人員,這一定會在某個時間點發生。 在 Python 中,由於您鍵入的所有代碼都是通過正確的空格排列的,因此如果在代碼中的任何實例中,您的縮進不正確,則整個代碼不會運行,並且解釋器將返回錯誤函數。 要確切了解需要注意什麼,下面列出了 Python 中縮進錯誤的一些常見原因:

1. 編碼時同時使用製表符和空格。 可以說理論上,製表符和空格都有相同的用途,但讓我們從解釋器的角度考慮這一點。 如果空格和製表符的使用不一致且可互換使用,則會產生歧義。 這將導致解釋器混淆使用哪種更改,並最終在 Python 中返回縮進錯誤。

2. 您無意中將縮進放置在錯誤的位置,或者代碼行之間沒有製表符或空格。 由於 Python 遵循嚴格的準則來安排編寫的代碼,因此在錯誤的位置縮進將不可避免地返回錯誤。 例如,Python 的第一行不應該縮進。

3. 有時,在完成一個過期的、特別長的程序時,您可能會在不知不覺中錯過縮進複合語句函數,例如 for、while 和 if。 這將再次導致縮進錯誤。 這是使用 Python 時對縮進最基本的需求,需要嚴格練習才能掌握。

4. 如果在使用自定義函數或不同的類時忘記使用縮進,很可能會彈出錯誤。

如何解決 Python 中的縮進錯誤?

1. 檢查錯誤的空格或製表符。 不幸的是,沒有快速修復縮進錯誤的方法。 由於代碼是您的,事實仍然是您必須評估每一行以單獨識別錯誤實例。 但是,由於代碼行是按塊排列的,因此過程相對簡單。 例如,如果您在特定序列中使用了“if”語句,則可以交叉檢查是否記得縮進下一行。

2. 確保特定塊的縮進在整個代碼中保持不變,即使在中間引入了一個新塊。 檢查縮進中的不一致。

如果上述手動解決方案對您不起作用,並且您很難確定錯過縮進的位置,請按照以下步驟操作:

3. 轉到您的代碼編輯器設置並啟用旨在顯示選項卡和空格的選項。 啟用此功能後,您將看到單個小點,其中每個點代表一個製表符/空白。 如果您注意到在不應該出現的地方丟失了一個drop,那麼該行可能有一個縮進錯誤。

4. 使用 Python 解釋器內置的 Indent Guide。 可以說,這種方法對於幾行代碼來說效率很低。 但是,由於它會帶您瀏覽每一行並準確顯示錯誤所在的位置,因此它是查找和修復所有錯誤的最可靠方法。

另請閱讀:現實世界中最令人著迷的 12 個 Python 應用程序

縮進的好處

可讀性和一致性對於任何好的代碼都是必不可少的。 在 PEP 8 空白之後,道德應該是不可協商的。 它在邏輯上證實了您的代碼,從而有助於獲得更愉快的編碼體驗。 此外,如果您遵循此文體指南,其中可讀性是您的事實,那麼您不認識但對您的工作感興趣的人將輕鬆理解您的代碼。

縮進的缺點

  • 如果代碼很大並且縮進已損壞,則修復縮進錯誤可能會很乏味。 這通常是從在線資源、Word 文檔或 PDF 文件複製代碼時。
  • 流行的編程語言通常使用大括號進行縮進。 對於剛開始使用 Python 的程序員來說,適應使用空格進行縮進的想法可能很困難。

加起來

你和編寫良好的代碼之間的一切都是縮進,而你、編寫良好的代碼及其無縫執行之間的一切都是縮進錯誤。 現在,所有人都會犯錯。 所有的程序員都是人。 因此,所有的程序員都會犯錯誤。 但是一個縮進錯誤很容易解決。 您需要做的就是呼吸並佔據您的空間。

我希望你在處理這些 python 項目時能學到很多東西。 如果您對學習數據科學以領先於快節奏的技術進步感到好奇,請查看 upGrad 和 IIIT-B 的數據科學執行 PG 計劃,並為未來提升自己的技能。

由於 Python 中的縮進,我會得到什麼錯誤?

Python 通過查看行首的空格來確定代碼塊何時開始和停止。 您可能會遇到以下縮進錯誤:
1.意外縮進——這行代碼的開頭的空格比前面的要多,但它前面的空格沒有開始子塊。 在一個塊中,所有代碼行必須以相同的空白字符串開頭。
2. Unndent 不對應任何外部縮進級別- 這行代碼在開頭包含的空格比前一行少,但它也不匹配任何其他塊。
3.需要一個縮進塊——這行代碼以與前一行相同數量的空格開始,但前一行應該開始一個塊(例如,if/while/for 語句、函數定義)。

你如何修復縮進 Spyder 中不一致的製表符和空格?

製表符和空格是兩個單獨的字符,在屏幕上顯示為空格。 問題是對於製表符應該有多大沒有達成共識,因此一些編輯器將其顯示為佔用 8 個空格,另一些顯示為 4 個空格,還有一些顯示為 2 個,而且它也是可自定義的。
當您編寫代碼但一行用製表符縮進而另一行用空格縮進時,Python 會拋出一個錯誤,儘管它在編輯器中看起來不錯(但如果您將製表符的寬度加倍,它看起來會不太好;現在製表符行將縮進兩級)。
為避免此問題,請轉到文本編輯器的選項並啟用將製表符轉換為空格功能,它將製表符替換為 n 個空格字符,其中 n 是編輯器使用的製表符寬度。

你如何在 Spyder 上顯示縮進?

選擇您的代碼並按 Tab 或 Shift + Tab 縮進或取消縮進。 修改代碼的其他工具可以在編輯部分找到。