Python 用缩进标记代码块。这看上去很优雅,但可能引入难以用肉眼察觉的语法错误。
if 1 == 1:
print(1)
print(2)
上面的程序使用 python3 -m py_compile
编译时,显示错误消息:
Sorry: IndentationError: unindent does not match any outer indentation level (t.py, line 3)
但是你看不出任何问题,这是因为 wiki 的前端把 tab 自动替换成 个空格了…… 如果你点右上角的“查看源码”就能看到了。
使用 python3 -m py_compile
检查。如果怀疑有空格和 tab 混用的情况,使用文本编辑器查找 tab 或者连串的空格。
在写 Python 代码时,按照 PEP-8 的要求,将代码编辑器配置为总是使用 个空格作为一个缩进级别,不要使用 tab 缩进。
对于现有的,全部使用 tab 缩进的 Python 代码,可以继续使用 tab。对于已经出现空格和 tab 混用的代码,建议使用代码编辑器的替换功能,将其改为统一使用空格或统一使用 tab。