在 VS Code 中格式化 Python 程式碼
格式化可使原始碼更易於人類閱讀。透過強制執行特定的規則和約定,例如行距、縮排和運算子周圍的間距,程式碼會變得更具視覺組織性和可理解性。您可以在 autopep8 頁面上看到一個示例。請記住,格式化不會影響程式碼本身的功能。
Linting 可透過分析程式碼中的常見語法、風格和功能錯誤以及不規範的程式設計實踐來幫助防止錯誤。雖然格式化和 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 |
此外,以下是支援匯入排序的格式化程式擴充套件
| 格式化程式 | 擴充套件 |
|---|---|
| Ruff | https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff |
| isort | https://marketplace.visualstudio.com/items?itemName=ms-python.isort |
注意:如果您在上面的表格或 Marketplace 中找不到首選的格式化程式,則可以透過擴充套件新增支援。您可以使用 Python Extension Template 將新的 Python 工具整合到 VS Code 中。
設定預設格式化程式
安裝格式化程式擴充套件後,您可以按照以下步驟將其設定為 VS Code 中 Python 檔案的預設格式化程式
- 在 VS Code 中開啟一個 Python 檔案。
- 右鍵單擊編輯器以顯示上下文選單。
- 選擇 使用...格式化文件。
- 從下拉選單中選擇 配置預設格式化程式...。
- 從列表中選擇您喜歡的格式化程式擴充套件。
或者,您可以透過在使用者 `settings.json` 檔案中 `[python]` 作用域下設定 `"editor.defaultFormatter"` 來將其設定為所有 Python 檔案的預設格式化程式。您可以使用 **首選項:開啟使用者設定 (JSON)** 命令開啟 `settings.json`。
例如,要將 Black Formatter 設定為預設格式化程式,請將以下設定新增到您的使用者 `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 格式化程式擴充套件。 |
| 格式化程式的自定義引數不正確。 | 檢查相應的 ` |
| 顯示“您具有已棄用的 Linting 或格式化設定”通知。 | 如果您看到此通知,則表示您的 VS Code 中存在 `python.linting` 或 `python.formatting` 等設定。Python 擴充套件不再支援這些設定,因為 Linting 和格式化支援已遷移到工具擴充套件。 |
| 使用 Black Formatter 時,“格式化選擇”命令失敗。 | `black` 不支援格式化程式碼段。為解決此限制,您可以停用貼上時格式化,並將 `formatOnSave` 設定為使用以下設定格式化整個檔案:`"[python]": {"editor.formatOnPaste": false, "editor.formatOnSaveMode": "file"}`。 |
| 即使安裝了格式化程式擴充套件,格式化仍然不起作用。 | 格式化可能由於多種原因失敗,例如程式碼中的語法問題、使用了不受支援的 Python 版本,或格式化程式配置不正確。檢查格式化程式擴充套件的輸出通道以瞭解格式化程式為何失敗(在命令面板中執行 **輸出:聚焦到輸出** 命令,然後選擇格式化程式擴充套件通道)。 |
注意:如果您在上面未找到首選的格式化程式,則可以透過擴充套件新增支援。 Python Extension Template 可輕鬆地將新的 Python 工具整合到 VS Code 中。
後續步驟
- 除錯 - 瞭解如何在本地和遠端除錯 Python。
- 測試 - 配置測試環境以及發現、執行和除錯測試。
- 基本編輯 - 瞭解功能強大的 VS Code 編輯器。
- 程式碼導航 - 快速瀏覽您的原始碼。
- Python Extension Template - 建立一個擴充套件,將您喜歡的 linter 整合到 VS Code 中。