了解Python 2.7中的缩进错误

Cu *_* Hh 5 python indentation python-2.7

在编写python代码时,我倾向于得到很多IndentationErrors.有时,当我删除并重写该行时,错误将消失.有人可以在python中为noob提供IndentationErrors的高级解释吗?

以下是我在播放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
Run Code Online (Sandbox Code Playgroud)

这是我调用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
Run Code Online (Sandbox Code Playgroud)

Ana*_*mar 6

当您混合制表符和空格时,通常会出现这种问题.

一些编辑器可能显示Tab为4位,但在Python 2.x中Tab被解释为8位,所以即使编辑器显示,多条线路都在同一级别缩进,他们未必真的在同一级别的Python缩进(特别是如果编辑器将选项卡解释为4个空格)

在Python 3.x中,你不能在所有混合制表符和空格,它会抛出一个语法错误在同一个python脚本混合制表符和空格.

理想情况下,您应该在整个脚本中使用完全制表符或完全空格,建议使用4个空格进行缩进.

  • 只需添加到上面.我们可以调整编辑器设置以符合选项卡的空格.就像我个人在我的`.vimrc`文件中添加以下条目进行`vim`编辑.`set tabstop = 4``set shiftwidth = 4``set expandtab` (3认同)