IndentationError:缩进错误
错误信息
expected an indented block
快速摘要
Python 靠缩进区分代码块,你的缩进要么少了、要么多了,或者 tab 和空格混用,Python 解析不了。
为什么发生
if/for/def后的代码块没有缩进同一个代码块里缩进不一致(有的 4 空格、有的 2 空格)
Tab 和空格混用
意外多了一层缩进
最小示例
✗ 错误代码
if x > 0:
print(x)✓ 修复代码
if x > 0:
print(x)if 后的代码块必须缩进。print(x) 前加 4 个空格即可。
如何诊断
阅读错误信息,Python 会指出出错的行号
在编辑器里开启显示空白字符,看缩进是否一致
确认
if/for/def等语句后的代码块都有缩进
如何修复
统一用 4 个空格缩进(PEP 8 推荐)
把 Tab 全部替换成空格
给空的代码块加上
pass语句
如何预防
配置编辑器把 Tab 转成 4 空格
使用
black或autopep8自动格式化代码