在 Visual Studio Code 中執行 Python 程式碼
無論您是在 REPL 中測試小段 Python 程式碼,還是準備執行 Python 指令碼,Python 擴充功能都提供了多種執行程式碼的方式。
互動式執行 Python 程式碼
安裝在您機器上的 Python 解譯器為您提供了所謂的互動式 REPL(讀取-求值-輸出迴圈),它會讀取一段程式碼、進行求值,然後將結果輸出到主控台。
在您的機器上安裝 Python 解譯器後,您可以透過開啟系統的終端機或命令提示字元,並輸入 python(Windows)或 python3(macOS/Linux)來與 Python REPL 互動。當看到 >>> 提示字元時,即表示已啟用 Python REPL。
在 VS Code 中,還有另外兩種與 Python REPL 互動的方式。
原生 REPL (Native REPL)
VS Code 的 Python 原生 REPL 是在傳統 Python REPL 的基礎上構建的,並提供了額外的功能,例如 Intellisense 和語法突顯,以提高您的 Python 開發效率。不過,此 REPL 仍遵循 Python 內建 REPL 的原則,即歷史執行順序及其內容是不可變的。
您可以透過命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))搜尋 Python: Start Native REPL 來開啟原生 REPL。此外,您可以透過在 settings.json 檔案中設定 "python.REPL.sendToNativeREPL": true,利用智慧傳送 (Smart Send)(Shift+Enter)與在 Python REPL 中執行選取範圍/行將程式碼傳送到原生 REPL。您可以透過在 settings.json 中設定 "python.REPL.sendToNativeREPL": false,選擇繼續使用位於終端機中的 Python 內建 REPL ( >>> )。

終端機 REPL (Terminal REPL)
就像您可以在 VS Code 之外與 Python REPL 互動一樣,您也可以在 VS Code 內開啟終端機並啟用 Python REPL。若要執行此操作,您可以在命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中搜尋 Python: Start Terminal REPL,這會為目前選取的 Python 解譯器開啟終端機。或者,您可以前往 終端機 (Terminal) > 新增終端機 (New Terminal) 並輸入 python(Windows)或 python3(macOS/Linux)指令。
透過終端機 Shell 整合 (Terminal Shell Integration),終端機支援多項功能,例如執行最近指令、指令裝飾器以及改進的無障礙存取。若要啟用或停用終端機中的 Shell 整合,您可以在設定中切換 python.terminal.shellIntegration.enabled 。
執行 Python 程式碼
Python 擴充功能提供了多種無需額外設定即可執行 Python 程式碼的方法。
-
選取編輯器右上角的執行 Python 檔案 (Run Python File in Terminal) 播放按鈕。

該按鈕會開啟一個終端機面板,其中會自動啟動您的 Python 解譯器,然後執行指定的指令碼(例如:
python3 hello.py(macOS/Linux) 或python hello.py(Windows))。
-
在編輯器視窗的任何位置按一下右鍵,然後選擇 執行 (Run) > 在終端機中執行 Python 檔案 (Run Python File in Terminal)(此操作會自動儲存檔案)。

-
選取一行或多行程式碼,然後按下 Shift+Enter,或按一下右鍵並選擇 在 Python 終端機中執行選取範圍/行 (Run Selection/Line in Python Terminal)。
此選項適合用於測試檔案中的一部分程式碼。
-
將游標置於某一行程式碼上,並按下 Shift+Enter 以啟動智慧傳送 (Smart Send)。
智慧傳送 (Smart Send)
Python 擴充功能預設啟用智慧傳送 (Shift+Enter)。智慧傳送會檢視游標所在位置的程式碼,將最小的可執行程式碼區塊傳送到 Python REPL,然後將您的游標移動到下一行程式碼。這使您能夠輕鬆且有效率地執行程式中的 Python 程式碼。
智慧傳送不適用於不支援的 Python 版本(例如 Python 2)或無效的 Python 程式碼。若要停用智慧傳送,改為僅傳送游標所在行的程式碼,請將 python.REPL.enableREPLSmartSend 設定為 false。