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 个空格,以便你可以轻松实现该错误并进行修复。
如果你想了解更多信息,请参阅此问题。