IndentationErrors(或縮排語法錯誤)

在大多數其他語言中,縮排不是強制性的,但在 Python(和其他語言:早期版本的 FORTRAN,Makefiles,Whitespace(深奧語言)等)中並非如此,如果你來自另一種語言會有什麼混淆,如果你將示例中的程式碼複製到你自己的程式碼中,或者僅僅是你是新程式碼。

IndentationError / SyntaxError:意外縮排

當縮排級別無緣無故地增加時,會引發此異常。

沒有理由提高這裡的水平:

Python 2.x <= 2.7
 print "This line is ok"
     print "This line isn't ok"
Python 3.x >= 3.0
 print("This line is ok")
     print("This line isn't ok")

這裡有兩個錯誤:最後一個錯誤,縮排與任何縮排級別都不匹配。但是隻顯示了一個:

Python 2.x <= 2.7
 print "This line is ok"
  print "This line isn't ok"
Python 3.x >= 3.0
 print("This line is ok")
  print("This line isn't ok")

IndentationError / SyntaxError:unindent 與任何外部縮排級別都不匹配

看起來你沒有完全取消。

Python 2.x <= 2.7
def foo():
    print "This should be part of foo()"
   print "ERROR!"
print "This is not a part of foo()"
Python 3.x >= 3.0
 print("This line is ok")
  print("This line isn't ok")

IndentationError:預期縮排塊

在冒號(然後是新行)之後,縮排級別必須增加。如果沒有發生,則會引發此錯誤。

if ok:
doStuff()

注意 :使用關鍵字 pass(絕對沒有任何東西)只是放一個 ifelseexceptclassmethoddefinition 但是不要說如果被呼叫/條件為真會發生什麼(但是稍後再做,或者在 except:什麼都不做):

def foo():
    pass

IndentationError:縮排中不一致使用製表符和空格

def foo():
    if ok:
      return "Two != Four != Tab"
        return "i dont care i do whatever i want"

如何避免此錯誤

不要使用標籤。Python 的樣式指南 PEP8 讓人氣餒。

  1. 將編輯器設定為使用 4 個空格進行縮排。
  2. 進行搜尋和替換以用 4 個空格替換所有選項卡。
  3. 確保你的編輯器設定為選項卡顯示為 8 個空格,以便你可以輕鬆實現該錯誤並進行修復。

如果你想了解更多資訊,請參閱問題。