参加你附近的 ,了解 VS Code 中的 AI 辅助开发。

在 VS Code 中格式化 Python

格式化使源代码更易于人类阅读。通过强制执行特定的规则和约定,例如行间距、缩进和运算符周围的空格,代码在视觉上变得更有条理、更易于理解。您可以在 autopep8 页面上查看一个示例。请记住,格式化不会影响代码本身的功能。

代码检查(Linting)通过分析代码中的常见语法、风格、功能性错误以及不规范的编程实践来帮助防止错误。尽管格式化和代码检查之间有一些重叠,但这两种功能是互补的。

选择格式化工具

VS Code Marketplace 中搜索您选择的格式化工具扩展。

Microsoft 发布了以下格式化工具扩展

格式化工具 扩展
autopep8 https://marketplace.visualstudio.com/items?itemName=ms-python.autopep8
Black formatter https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter

社区提供的格式化工具扩展

格式化工具 扩展
Ruff https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff
yapf https://marketplace.visualstudio.com/items?itemName=eeyore.yapf

此外,以下是支持 import 排序的格式化工具扩展

格式化工具 扩展
Ruff https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff
isort https://marketplace.visualstudio.com/items?itemName=ms-python.isort

注意:如果您在上面的表格或 Marketplace 中没有找到您偏好的格式化工具,您可以通过扩展为其添加支持。您可以使用 Python 扩展模板将新的 Python 工具集成到 VS Code 中。

设置默认格式化工具

安装格式化工具扩展后,您可以按照以下步骤将其选为 VS Code 中 Python 文件的默认格式化工具

  1. 在 VS Code 中打开一个 Python 文件。
  2. 在编辑器上右键单击以显示上下文菜单。
  3. 选择使用...格式化文档(Format Document With...)
  4. 从下拉菜单中选择配置默认格式化工具...(Configure Default Formatter...)
  5. 从列表中选择您偏好的格式化工具扩展。

或者,您可以在用户 settings.json 文件的 [python] 作用域下设置 "editor.defaultFormatter",将其设为所有 Python 文件的默认格式化工具。您可以使用首选项: 打开用户设置(JSON) (Preferences: Open User Settings (JSON)) 命令打开 settings.json

例如,要将 Black Formatter 设置为默认格式化工具,请将以下设置添加到您的用户 settings.json 文件中

  "[python]": {
    "editor.defaultFormatter": "ms-python.black-formatter"
  }

要将某个格式化工具扩展设置为 import 排序器,您可以在用户 settings.json 文件或工作区 settings.json 文件的 [python] 作用域下,在 "editor.codeActionsOnSave" 中设置您的偏好。您可以分别使用首选项: 打开用户设置(JSON) (Preferences: Open User Settings (JSON))首选项: 打开工作区设置(JSON) (Preferences: Open Workspace Settings (JSON)) 命令打开这些 settings.json 文件。这将为所有 Python 文件启用保存时 import 排序。

例如,要将 Ruff 设置为您偏好的 import 排序器,您可以将以下设置添加到您的用户 settings.json 或工作区 settings.json 文件中

{
  "[python]": {
    "editor.codeActionsOnSave": {
      "source.organizeImports.ruff": "explicit"
    }
  }
}

格式化您的代码

您可以通过在编辑器上右键单击并选择格式化文档 (Format Document),或使用键盘快捷键 ⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) 来格式化您的代码。

您还可以将以下设置添加到您的用户 settings.json 文件中,以启用保存时格式化代码的功能

  "[python]": {
    "editor.formatOnSave": true
  }

常规格式化设置

您可以参考每个格式化工具扩展的 README 文件以获取有关支持设置的更多详细信息。以下是大多数格式化工具扩展支持的设置

设置后缀
默认值 描述
args [] 要传递给格式化工具的参数。每个参数都应作为数组中的一个独立字符串传递。
例如
black-formatter.args: ["--line-length", "100"]
importStrategy useBundled 当设置为 useBundled 时,扩展使用其自带的工具版本。当设置为 fromEnvironment 时,它会首先尝试从您选择的 Python 环境中加载,否则将回退到自带的版本。
path "" 用于格式化的格式化工具二进制文件的路径。注意:使用此选项可能会减慢格式化速度。
interpreter [] 当设置为一个 Python 可执行文件的路径时,扩展将使用该路径来启动格式化工具服务器及其子进程。
showNotifications off 控制扩展何时显示通知。支持的值为 offalwaysonErroronWarning

格式化问题排查

如果格式化失败,请检查以下可能的原因

问题 解决方案
有多个格式化工具可用于 Python 文件。 按照上一节中的说明设置默认格式化工具。
没有可用的“使用...格式化文档(Format Document With...)”选项。 如果您在上下文菜单中看不到此选项,很可能是因为您没有在 VS Code 中安装或启用格式化工具扩展。请参考选择格式化工具部分,了解如何安装 Python 格式化工具扩展。
格式化工具的自定义参数不正确。 检查相应的 <formatter>.path 设置不包含参数,并且 <formatter>.args 包含一个由独立的顶层参数元素组成的列表。
显示“您有已弃用的代码检查或格式化设置(You have deprecated linting or formatting settings)”通知。 如果您看到此通知,这意味着您在 VS Code 中有诸如 python.lintingpython.formatting 之类的设置。Python 扩展不再支持这些设置,因为代码检查和格式化支持已迁移到工具扩展
使用 Black Formatter 时,“格式化选定内容(Format Selection)”命令失败。 black 不支持格式化部分代码。要解决此限制,您可以禁用粘贴时格式化,并通过以下设置将 formatOnSave 设置为格式化整个文件:"[python]": {"editor.formatOnPaste": false, "editor.formatOnSaveMode": "file"}
即使我已经安装了格式化工具扩展,格式化也不起作用。 格式化可能因多种原因失败,例如代码中存在语法问题、使用了不受支持的 Python 版本,或者格式化工具配置不正确。检查格式化工具扩展的“输出”通道以了解格式化失败的原因(在命令面板中运行输出: 聚焦于输出视图(Output: Focus on Output) 命令,然后选择格式化工具扩展的通道)。

注意:如果您在上面没有找到您偏好的格式化工具,您可以通过扩展为其添加支持。Python 扩展模板可以轻松地将新的 Python 工具集成到 VS Code 中。

后续步骤

  • 调试 - 了解如何在本地和远程调试 Python。
  • 测试 - 配置测试环境以及发现、运行和调试测试。
  • 基本编辑 - 了解功能强大的 VS Code 编辑器。
  • 代码导航 - 快速浏览您的源代码。
  • Python 扩展模板 - 创建一个扩展,将您最喜欢的代码检查工具集成到 VS Code 中。