Python:缩进中制表符和空格的使用不一致
(Python) inconsistent use of tabs and spaces in indentation
当我们在同一个代码块中混合使用制表符和空格时,会出现 Python“TabError: inconsistent use of tabs and spaces in indentation”。
要解决该错误,请删除间距并仅使用制表符或空格,但不要将两者混合在同一代码块中。
下面是错误如何发生的示例。
# ⛔️ 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')
确保代码块中的代码行缩进到同一级别。
您可以使用制表符或空格缩进代码。
您的错误消息应显示出现错误的确切位置,以便您可以删除空格并使用制表符或空格一致地缩进代码块中的行。
将缩进转换为空格或制表符
如果您使用 VSCode,您可以使用“将缩进转换为空格”或“将缩进转换为制表符”命令来解决错误:
- 按
CTRL + Shift + P
或(在 Mac 上为⌘
+Shift
+P
)打开命令面板。 - 类型:“将缩进转换为”
- 选择您的首选选项
- 保存文件
在您的 IDE 中显示空白字符
如果你使用 VSCode,你可以通过以下方式显示空白字符:
- 按
CTRL + Shift + P
或(在 Mac 上为⌘
+Shift
+P
)打开命令面板。 - 输入“打开工作区设置”
- 打字
renderwhitespace
- 将其设置为
all
如果您在 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
确保在运行autopep8
命令后保存文件。
使用 tabnanny 检测缩进错误
您可以使用tabnanny
内置模块来检测在哪一行发生了缩进错误。
python -m tabnanny main.py # 👇️ for Python 3 python3 -m tabnanny main.py # 👇️ for Windows py -m tabnanny main.py
确保替换main.py
为包含错误的文件的名称。
错误信息表明错误发生在第 3 行。
换句话说,我必须从第 3 行中删除前导空格并一致地缩进代码(仅使用空格或仅使用制表符)。
解决 IDLE 代码编辑器中的错误
如果您在 IDLE 代码编辑器中遇到错误:
- 单击顶部菜单中的编辑,然后单击全选。
- 点击顶部菜单中的Format ,然后点击Untabify Region。
3. 选择每个选项卡 8 列,然后单击确定。
单击“确定”按钮后,保存文件,然后就可以开始了。
pep8 风格指南推荐使用空格
pep8风格指南
建议在制表符上使用空格进行缩进。
根据建议,应该在已经使用制表符缩进的代码库中使用制表符。
但是,他们建议为新项目使用空间。
如前所述,Python 不允许混用制表符和空格进行缩进。
使用制表符还是空格取决于个人喜好,但请确保不要将两者混合在同一代码库中,因为这通常会导致 Python 出现问题。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: