logo

该视频仅会员有权观看

立即开通课程「Python 入门」权限。

¥
199
/ 年

在 Python 中,缩进不仅仅是代码格式化的一部分,它是 Python 语法的一个核心元素。

想象你在组织一个活动的流程,其中包括主活动和一些子活动。如果将主活动和子活动都写在同一行上,参与者可能不清楚哪些是主要的,哪些是次要的。通过将子活动缩进,即放在主活动下方并向右移动一些,参与者可以一眼看出活动的层次结构。

在很多其他编程语言中,代码块(如循环、条件语句、函数定义等)通过大括号 {} 来定义。Python 不使用大括号而使用缩进来表示代码块的开始和结束。

比如现在我们编写了如下所示的代码:

# welcome.py line01="********************************" line02="* *" line03="* Welcome to fastclass.cn! *" line04="* *" line05="********************************" print(line01) print(line02) print(line03) print(line04) print(line05)

上面的代码是一个简单的打印欢迎语句的程序,我们可以直接执行这段代码,看看输出结果。

➜ python3 welcome.py ******************************** * * * Welcome to fastclass.cn! * * * ********************************

从输出的结果可以看到,其实第一行和最后一行是一样的,第二行和倒数第二行也是一样的,这样的代码其实是可以优化的,我们可以将这些重复的代码提取出来,直接使用相同的变量即可。

# welcome.py line01="********************************" line02="* *" line03="* Welcome to fastclass.cn! *" print(line01) print(line02) print(line03) print(line02) print(line01)

这样我们就可以减少代码的重复,提高代码的可维护性。

这里我们需要继续来讨论缩进的问题。缩进在 Python 中是有特殊含义的,如果你熟悉其他编程语言,比如 JavaScript,和其他编程语言一样,他们会忽略空格,但是在 Python 中不会。

比如我们在上面的代码中在定义一个 line04 的变量,并将其随便缩进几个空格,其值随便设置即可,这里我们只是为了演示缩进的问题。添加完这行代码后在我们的 VSCode 中就会出现红色的波浪线,表示这里有一个错误,我们可以将鼠标放在这个错误上,就会看到错误提示(也可以点击查看问题来了解更详细的解释)。

这里提示的错误是 unexpected indent,意思是意外缩进,这是因为 Python 中的缩进是有特殊含义的,如果你在一个代码块中使用了不同的缩进,那么 Python 解释器就会认为这是一个错误的代码。

解释缩进的具体规则,包括:

  • 常用的缩进宽度是 4 个空格(这是大多数编程环境的默认设置)。
  • 不要使用 Tab 和空格混合缩进(虽然 Python3 对此有所改善,但最好遵守一致的风格)。
  • 所有同一代码块中的语句必须具有相同的缩进。

上面代码中定义的 line04 变量和前面的变量显然是属于同一个代码块,所以他们的缩进应该是一样的,这里我们将 line04 的缩进调整到和前面的变量一样,这样就不会报错了。

除了手动修复缩进错误外,我们还可以配置 VSCode 来进行自动修复。我们可以使用快捷键 Cmd + , 打开设置,然后搜索 format on save,确保 Editor: Format On Save 这个选项是勾选的,Editor: Format On Save Mode 选择 file,这样我们在保存文件的时候就会自动格式化代码,包括自动修复缩进错误。

除了上面的配置之外,我们还需要配置一个格式化的提供器(formatter),一般我们经常使用的有下面 3 种:

  • autopep8
  • black
  • yapf

Formatter 主要是为了让我们的 Python 代码最大限度遵循 PEP8 以及一般风格规范,这也是所有 Python 开发者都应该具备的良好习惯。PEP8 是 Python 社区推荐的代码风格规范,它包含了很多关于代码格式化的规则,比如缩进、空格、命名规范等等,在后续的课程中我们会慢慢接触到这些规范。

这里我们选择使用 autopep8 这个格式化工具,首先需要在 VSCode 中搜索 autopep8 插件并安装启用。

然后我们还需要打开终端安装 autopep8 工具。

pip3 install autopep8

安装完成后我们需要在 VSCode 配置中启用 autopep8 这个格式化工具,打开设置搜索 @id:editor.defaultFormatter @lang:python formatter,找到 Editor: Default Formatter 这个选项,选择 autopep8 即可。

这样我们就完成了 autopep8 的配置,当我们保存 Python 文件的时候,VSCode 就会自动帮我们格式化代码,包括自动修复缩进错误。

当然除了可以通过 UI 界面来对 VSCode 进行配置,我们也可以直接修改 settings.json 文件来配置,这个文件保存了 VSCode 的所有配置信息,我们可以直接修改这个文件来配置 VSCode。

"[python]": { "editor.formatOnSave": true, "editor.defaultFormatter": "ms-python.autopep8" }

现在我们就可以去重新保存下代码文件,正常上面的代码就会自动格式化了,不会再有缩进错误了。