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
(絕對沒有任何東西)只是放一個 if
,else
,except
,class
,method
或 definition
但是不要說如果被呼叫/條件為真會發生什麼(但是稍後再做,或者在 except
:什麼都不做):
def foo():
pass
IndentationError:縮排中不一致使用製表符和空格
例
def foo():
if ok:
return "Two != Four != Tab"
return "i dont care i do whatever i want"
如何避免此錯誤
不要使用標籤。Python 的樣式指南 PEP8
讓人氣餒。
- 將編輯器設定為使用 4 個空格進行縮排。
- 進行搜尋和替換以用 4 個空格替換所有選項卡。
- 確保你的編輯器設定為將選項卡顯示為 8 個空格,以便你可以輕鬆實現該錯誤並進行修復。
如果你想了解更多資訊,請參閱此問題。