了解 Python 2.7 中的缩进错误

Understanding IndentationErrors in Python 2.7

我在编写 python 代码时往往会遇到很多缩进错误。有时,当我删除并重写该行时,错误会消失。有人可以为新手提供 python 中缩进错误的高级解释吗?

这是我最近在玩 CheckIO 时收到的一个不会消失的缩进错误示例:

def checkpass(data):
     """Checks password for >=10 char + 1 number + 1 LC letter + 1 UC letter"""

     passlist = []
     uclist = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
               'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 
               'Y', 'Z']
     lclist = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
               'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
               'y', 'z']

     blah blah.. more code

这是我在调用 python 脚本时收到的错误:

$ python passcheck.py
File "passcheck.py", line 5
uclist = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
                                                                    ^
IndentationError: unindent does not match any outer indentation level

这种问题通常在混用制表符和空格时出现。

有些编辑器可能会把Tab显示为4个空格,但在Python中2.x Tab被解释为8 个空格,所以即使编辑器显示多行在同一级别缩进,对于 python 它们可能并不是真正在同一级别缩进(特别是如果编辑器将制表符解释为 4 个空格)

在 Python 3.x 中,根本不允许混合制表符和空格,在同一个 python 脚本中混合制表符和空格会引发语法错误。

理想情况下,您应该在整个脚本中使用完整的制表符或完整的空格,4 个空格是缩进的推荐做法。