在VS Code中格式化Python

格式化让源代码更容易被人类阅读。通过强制执行行距、缩进和作符周围的间距等特定规则和惯例,代码变得更加直观且易于理解。你可以在autopep8页面查看示例。请记住,格式不会影响代码本身的功能。

线条化通过分析代码中的常见语法、样式和函数错误以及非常规编程实践,有助于防止错误。虽然格式化和打印功能有些重叠,但两者是互补的。

选择格式化器

VS Code市场搜索你喜欢的格式化扩展。

Microsoft发布以下格式扩展:

福尔马特 扩展
AutoPEP8 https://marketplace.visualstudio.com/items?itemName=ms-python.autopep8
黑色制片机 https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter

社区提供的Formatter扩展:

福尔马特 扩展
汪汪 https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff
雅普夫 https://marketplace.visualstudio.com/items?itemName=eeyore.yapf

此外,以下是支持导入排序的格式化扩展:

福尔马特 扩展
汪汪 https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff
isort https://marketplace.visualstudio.com/items?itemName=ms-python.isort

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

设置默认格式化器

安装格式化工具扩展后,你可以按照以下步骤选择它作为 VS Code Python 文件的默认格式化工具:

  1. 在VS Code中打开一个Python文件。
  2. 右键点击编辑器即可显示上下文菜单。
  3. 选择格式化文档,使用......
  4. 从下拉菜单中选择配置默认格式。
  5. 从列表中选择你喜欢的格式化扩展。

或者,你也可以通过设置将其设置为所有 Python 文件的默认格式化“editor.defaultFormatter”在你的用户中settings.json文件,在a[Python]范围。你可以开门了settings.json使用偏好设置:打开用户设置(JSON)命令。

例如,要将黑色Formatter设置为默认格式化器,请在用户中添加以下设置settings.json文件:

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

为了设置格式化扩展作为导入排序器,你可以在“editor.codeActionsOnSave”在你的用户中settings.json文件或你的工作区settings.json文件,在a[Python]范围。你可以打开这些settings.json文件分别使用偏好设置:打开用户设置(JSON)偏好设置:开放工作区设置(JSON)命令。这样所有Python文件都能在保存时进行导入排序。

例如,要将 Ruff 设置为首选导入分拣器,你可以在用户中添加以下设置settings.json或者你的工作空间settings.json文件:

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

格式化你的代码

你可以通过右键点击编辑器并选择格式化文档来格式化代码,或者使用⇧⌥F(Windows Shift+Alt+F,Linux Ctrl+Shift+I快捷键来格式化代码。

你也可以为你的用户添加以下设置settings.json文件以启用保存代码格式化:

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

一般格式设置

你可以参考每个格式扩展的 README 来了解支持的设置细节。以下设置被大多数格式化器扩展支持:

设定后缀
默认值 描述
args [] 论据则交给格式制定者。每个参数应作为独立字符串传递到数组中。
例如:

black-formatter.args: [“--行长”, “100”]
importStrategy useBundled 当设置为useBundled扩展使用其自带版本的工具。当设置为来自环境它会先尝试从你选定的 Python 环境加载,否则会退回到捆绑的版本。
路径 "" 用于格式化的格式化二进制文件路径。注:使用此选项可能会减慢排版速度。
解释器 [] 当设置为 Python 可执行文件的路径时,扩展会利用该路径启动格式化服务器及其子进程。
show通知 不对劲 扩展显示通知时的控制。支持的值有不对劲,永远,onError, 和警告.

排查格式问题

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

问题 解决方案
Python 文件有多种格式化工具可用。 按照上面部分的说明设置默认格式。
没有“格式化文档......”有选项可选。 如果你在右键菜单里没看到这个选项,很可能你还没有安装或启用VS Code中的格式化扩展。请参考“选择格式”部分,了解如何安装 Python 格式化扩展。
格式化器的自定义参数是错误的。 检查是否符合条件<formatter>.path设置不包含参数,且<formatter>.args包含单个顶层参数元素的列表。
会显示“您的线条或格式化设置已弃用”通知。 如果你看到这个通知,说明你有以下设置python.lintingpython.formatting在VS Code中。这些设置已不再被 Python 扩展支持,因为 linting 和格式化支持已迁移到工具扩展中。
使用黑色格式选择命令时失败。 黑色不支持代码的格式化部分。为了绕过这个限制,你可以禁用粘贴时格式化和设置formatOnSave用以下设置格式化整个文件:“[python]”: {“editor.formatOnPaste”: false, “editor.formatOnSaveMode”: “file”}.
即使我安装了格式化扩展,格式化还是不起作用。 格式化失败可能因各种原因而失败,比如代码语法问题、使用了不支持的Python版本,或者格式化器配置不正确。检查格式化扩展的输出通道,了解格式化器失败的原因(在命令面板中运行“输出:聚焦输出”命令,然后选择格式扩展通道)。

注意:如果你找不到上面列出的偏好格式工具,可以通过扩展添加支持。Python 扩展模板使得将新的 Python 工具集成到 VS Code 变得简单。

下一步

  • 调试——学习本地和远程调试Python。
  • 测试——配置测试环境,并发现、运行和调试测试。
  • 基础编辑——了解强大的VS Code编辑器。
  • 代码导航——快速浏览源代码。
  • Python 扩展模板——创建一个扩展,将你喜欢的 linter 集成到 VS Code 中。