Python:缩进中制表符和空格的使用不一致

Python:缩进中制表符和空格的使用不一致

(Python) inconsistent use of tabs and spaces in indentation

当我们在同一个代码块中混合使用制表符和空格时,会出现 Python“TabError: inconsistent use of tabs and spaces in indentation”。

要解决该错误,请删除间距并仅使用制表符或空格,但不要将两者混合在同一代码块中。

taberror 在缩进中使用制表符和空格不一致

下面是错误如何发生的示例。

主程序
# ⛔️ TabError: inconsistent use of tabs and spaces in indentation if len('hi') == 2: print('a') print('b')

代码块中的第一行使用制表符缩进,第二行使用空格和制表符缩进。

混合制表符和空格

屏幕截图显示该print('a')行使用制表符(箭头)缩进,该print('b')行使用空格和制表符(点和箭头)缩进。

仅使用制表符或空格缩进行

要解决该错误,请删除空格并仅使用制表符或空格缩进代码块中的行。

主程序
# ✅ correctly indented code if len('hi') == 2: print('a') print('b')

确保代码块中的代码行缩进到同一级别。

您可以使用制表符或空格缩进代码。

但是,您不应在同一个代码块中混用制表符和空格,因为这通常会导致 Python 出现问题。

您的错误消息应显示出现错误的确切位置,以便您可以删除空格并使用制表符或空格一致地缩进代码块中的行。

taberror 在缩进中使用制表符和空格不一致

将缩进转换为空格或制表符

如果您使用 VSCode,您可以使用“将缩进转换为空格”或“将缩进转换为制表符”命令来解决错误:

  1. CTRL + Shift + P或(在 Mac 上为+ Shift+ P)打开命令面板。
  2. 类型:“将缩进转换为”
  3. 选择您的首选选项
  4. 保存文件

vscode 将缩进转换为

在您的 IDE 中显示空白字符

如果你使用 VSCode,你可以通过以下方式显示空白字符:

  1. CTRL + Shift + P或(在 Mac 上为+ Shift+ P)打开命令面板。
  2. 输入“打开工作区设置”
  3. 打字renderwhitespace
  4. 将其设置为all

vscode 渲染空白

如果您在 IDE 中呈现空白字符,制表符应显示为箭头,空格应显示为点。

混合制表符和空格

如果您使用 Sublime Text,您可以通过以下方式将其设置为使用制表符进行缩进:

  • 单击查看->缩进->将缩进转换为制表符

如果选中了Indent using spaces复选框,您也可以取消选中它。

如果仅使用制表符或仅使用空格,这是个人喜好问题,但请确保不要将两者混用。

主程序
# ✅ consistently indented code def my_function(): if len('hi') == 2: print('a') print('b') elif len('one' == 1): print('c') else: print('d')
请注意,如果您在一个代码块中使用制表符而在另一个代码块中使用空格,则不会出现错误。

仅当您在同一代码块中混合使用制表符和空格时才会引发此错误。

仅使用制表符或空格

上面的if语句使用制表符进行缩进,下面的语句使用空格。

该示例不会导致错误,因为我们没有在同一代码块中混合使用制表符和空格。

使用autopep8模块解决错误

autopep8模块自动将代码格式化为 PEP 8 风格指南。

该模块可用于修复缩进错误。

您可以autopep8通过运行以下命令来安装。

pip install --upgrade autopep8 # 👇️ or with pip3 pip3 install --upgrade autopep8 # 👇️ in case you don't have PIP in PATH environment variable python -m pip install --upgrade autopep8 python3 -m pip install --upgrade autopep8 # 👇️ for Windows py -m pip install --upgrade autopep8

现在您可以使用autopep8命令来解决错误。

autopep8 -i main.py

使用 autopep 8 解决错误

确保在运行autopep8命令后保存文件。

使用 tabnanny 检测缩进错误

您可以使用tabnanny内置模块来检测在哪一行发生了缩进错误。

python -m tabnanny main.py # 👇️ for Python 3 python3 -m tabnanny main.py # 👇️ for Windows py -m tabnanny main.py

使用 tabnanny 检测不一致

确保替换main.py为包含错误的文件的名称。



错误信息表明错误发生在第 3 行。

换句话说,我必须从第 3 行中删除前导空格并一致地缩进代码(仅使用空格或仅使用制表符)。

解决 IDLE 代码编辑器中的错误

如果您在 IDLE 代码编辑器中遇到错误:

  1. 单击顶部菜单中的编辑,然后单击全选
  2. 点击顶部菜单中的Format ,然后点击Untabify Region

解除区域3. 选择每个选项卡 8 列,然后单击确定

解决idle ide的错误

单击“确定”按钮后,保存文件,然后就可以开始了。

pep8 风格指南推荐使用空格

pep8风格指南
建议在制表符上使用空格进行缩进。

根据建议,应该在已经使用制表符缩进的代码库中使用制表符。

但是,他们建议为新项目使用空间。

如前所述,Python 不允许混用制表符和空格进行缩进。

使用制表符还是空格取决于个人喜好,但请确保不要将两者混合在同一代码库中,因为这通常会导致 Python 出现问题。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: