在 VS Code 中格式化 Python
格式化使得源代码更容易被人类阅读。通过强制执行特定的规则和约定,如行间距、缩进和运算符周围的间距,代码变得更具视觉组织性且更易理解。你可以在 autopep8 页面上查看示例。请记住,格式化本身不会影响代码的功能。
代码检查通过分析代码是否存在常见的语法、样式和功能错误以及非规范的编程实践来帮助预防错误。尽管格式化和代码检查之间存在一些重叠,但这两种功能是互补的。
选择格式化程序
在 VS Code 市场中搜索你选择的格式化程序扩展。
Microsoft 发布了以下格式化程序扩展
格式化程序 | 扩展 |
---|---|
autopep8 | https://marketplace.visualstudio.com/items?itemName=ms-python.autopep8 |
Black 格式化程序 | 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 |
此外,以下是支持导入排序的格式化程序扩展
格式化程序 | 扩展 |
---|---|
Ruff | 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 文件的默认格式化程序
- 在 VS Code 中打开一个 Python 文件。
- 右键单击编辑器以显示上下文菜单。
- 选择 使用以下方式格式化文档...。
- 从下拉菜单中选择 配置默认格式化程序...。
- 从列表中选择你偏好的格式化程序扩展。
或者,你可以在用户 settings.json
文件中的 [python]
范围内设置 "editor.defaultFormatter"
,以将其设置为所有 Python 文件的默认格式化程序。你可以使用 首选项: 打开用户设置 (JSON) 命令打开 settings.json
。
例如,要将 Black 格式化程序设置为默认格式化程序,请将以下设置添加到你的用户 settings.json
文件中
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
}
为了将格式化程序扩展设置为导入排序器,你可以在你的用户 settings.json
文件或工作区 settings.json
文件中的 [python]
范围内设置 "editor.codeActionsOnSave"
。你可以分别使用 首选项: 打开用户设置 (JSON) 和 首选项: 打开工作区设置 (JSON) 命令打开这些 settings.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: ["--line-length", "100"] |
importStrategy | useBundled |
当设置为 useBundled 时,扩展使用其附带的工具版本。当设置为 fromEnvironment 时,它首先尝试从你选择的 Python 环境加载,否则回退到捆绑版本。 |
path | "" |
用于格式化的格式化程序二进制文件路径。注意:使用此选项可能会减慢格式化速度。 |
interpreter | [] |
当设置为 Python 可执行文件的路径时,扩展将使用该路径启动格式化程序服务器及其子进程。 |
showNotifications | off |
控制扩展何时显示通知。支持的值包括 off 、always 、onError 和 onWarning 。 |
格式化疑难解答
如果格式化失败,请检查以下可能的原因
问题 | 解决方案 |
---|---|
有多个格式化程序可用于 Python 文件。 | 按照上面一节中的说明设置默认格式化程序。 |
没有“使用以下方式格式化文档...”选项可用。 | 如果你在上下文菜单中没有看到此选项,很可能你没有在 VS Code 中安装或启用格式化程序扩展。请参阅选择格式化程序一节,了解如何安装 Python 格式化程序扩展。 |
格式化程序的自定义参数不正确。 | 检查相应的 <formatter>.path 设置不包含参数,并且 <formatter>.args 包含单个顶级参数元素的列表。 |
显示“你具有已弃用的代码检查或格式化设置”通知。 | 如果你看到此通知,这意味着你在 VS Code 中具有诸如 python.linting 或 python.formatting 之类的设置。Python 扩展不再支持这些设置,因为代码检查和格式化支持已迁移到工具扩展。 |
使用 Black 格式化程序时,格式化选定内容 命令失败。 | black 不支持格式化代码片段。为了解决此限制,你可以禁用粘贴时格式化,并将 formatOnSave 设置为使用以下设置格式化整个文件:"[python]": {"editor.formatOnPaste": false, "editor.formatOnSaveMode": "file"} 。 |
即使我安装了格式化程序扩展,格式化也无法工作。 | 格式化可能因各种原因而失败,例如代码中的语法问题、使用了不受支持的 Python 版本,或者格式化程序配置不正确。请检查格式化程序扩展的“输出”通道,以了解格式化失败的原因(在命令面板中运行 输出: 聚焦于输出 命令,然后选择格式化程序扩展通道)。 |
注意:如果你在上面找不到你偏好的格式化程序,可以通过扩展添加支持。使用 Python 扩展模板可以轻松地将新的 Python 工具集成到 VS Code 中。
下一步
- 调试 - 了解如何在本地和远程调试 Python。
- 测试 - 配置测试环境,发现、运行和调试测试。
- 基本编辑 - 了解强大的 VS Code 编辑器。
- 代码导航 - 快速浏览你的源代码。
- Python 扩展模板 - 创建一个扩展,将你喜爱的代码检查工具集成到 VS Code 中。