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 个空格,以便你可以轻松实现该错误并进行修复。

如果你想了解更多信息,请参阅问题。