Skip to content

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 空格

  • 使用 blackautopep8 自动格式化代码

相关资源

相关术语

相关课程

相关练习

← 返回语言