在 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 檔案的預設格式化工具
- 在 VS Code 中開啟一個 Python 檔案。
- 在編輯器上右鍵單擊以顯示上下文選單。
- 選擇使用...格式化文件(Format Document With...)。
- 從下拉選單中選擇配置預設格式化工具...(Configure Default Formatter...)。
- 從列表中選擇您偏好的格式化工具擴充套件。
或者,您可以在使用者 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 |
控制擴充套件何時顯示通知。支援的值為 off 、always 、onError 和 onWarning 。 |
格式化問題排查
如果格式化失敗,請檢查以下可能的原因
問題 | 解決方案 |
---|---|
有多個格式化工具可用於 Python 檔案。 | 按照上一節中的說明設定預設格式化工具。 |
沒有可用的“使用...格式化文件(Format Document With...)”選項。 | 如果您在上下文選單中看不到此選項,很可能是因為您沒有在 VS Code 中安裝或啟用格式化工具擴充套件。請參考選擇格式化工具部分,瞭解如何安裝 Python 格式化工具擴充套件。 |
格式化工具的自定義引數不正確。 | 檢查相應的 <formatter>.path 設定不包含引數,並且 <formatter>.args 包含一個由獨立的頂層引數元素組成的列表。 |
顯示“您有已棄用的程式碼檢查或格式化設定(You have deprecated linting or formatting settings)”通知。 | 如果您看到此通知,這意味著您在 VS Code 中有諸如 python.linting 或 python.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 中。