在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 文件的默认格式化工具:
- 在VS Code中打开一个Python文件。
- 右键点击编辑器即可显示上下文菜单。
- 选择格式化文档,使用......。
- 从下拉菜单中选择配置默认格式。
- 从列表中选择你喜欢的格式化扩展。
或者,你也可以通过设置将其设置为所有 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.linting或python.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 中。