使用 Python 互動式視窗

Visual Studio 為您的每個 Python 環境提供互動式「讀取、求值、輸出」迴圈 (REPL) 視窗,它是以透過命令列上的 python.exe 取得的 REPL 為基礎加以改進。 互動式 視窗 (以 [檢視]>[其他視窗]><環境> 互動式功能表命令開啟) 可讓您輸入任意 Python 程式碼並立即查看結果。 這種編碼方式可協助您了解並實驗應用程式開發介面和程式庫,並以互動方式開發工作程式碼,以包含在您的專案中。

Screenshot showing the Python interactive read-evaluate-print loop (REPL) window.

Visual Studio 有許多 Python REPL 模式可供選擇:

REPL 描述 編輯 偵錯 影像
標準 預設的 REPL 直接與 Python 交談 標準編輯 (多行等等)。 是,透過 $attach No
偵錯 預設的 REPL 與已完成偵錯的 Python 程序交談 標準編輯 僅偵錯 No
IPython REPL 與 IPython 後端交談 IPython 命令、Pylab 便利性 No 是,內嵌於 REPL
IPython (沒有 Pylab) REPL 與 IPython 後端交談 標準 IPython No 是,獨立視窗

本文章描述標準偵錯 REPL 模式。 如需 IPython 模式的詳細資料,請參閱使用 IPython REPL

如需範例的詳細逐步解說 (包含與編輯器的互動,例如 Ctrl+Enter),請參閱教學課程步驟 3:使用互動式 REPL 視窗

開啟互動式視窗

有多個方式可以開啟環境的互動式視窗。

第一種方式:切換至 [Python 環境] 視窗 ([檢視]>[其他視窗]>[Python 環境]Ctrl+K>Ctrl+`),並選取所選環境的 [開啟互動式視窗] 命令或按鈕。

Screenshot of Environments window with Open Interactive Window link selected.

第二種方式:在 [檢視]>[其他視窗] 功能表底部附近,有您預設環境的 Python 互動式視窗命令,以及切換至 [環境] 視窗的命令:

Screenshot showing Interactive Window menu items in View > Other Windows.

第三種方式, 您可以選取 [偵錯]>執行 <[專案 | 檔案>] > 在 Python 互動式功能表命令 (Shift+Alt+F5) 中,在專案的啟動檔案上開啟互動式視窗,或是針對獨立檔案開啟互動式視窗:

Screenshot of Execute Project in Python Interactive menu.

最後一種方式:您可以選取檔案中的程式碼,並使用於下一節所述的傳送互動式命令

互動式視窗選項

您可以透過 [工具]>[選項]>[Python]>[互動式視窗] 控制互動式視窗的各方面 (請參閱選項):

Screenshot of Python Interactive Windows under Options.

使用互動式視窗

互動式視窗開啟之後,您即可開始在 >>> 提示字元逐行輸入程式碼。 [互動式] 視窗會在您輸入時執行每一行,其中包括匯入模組、定義變數等選項。

Screenshot showing how to use Python interactive window.

例外情況是在需要其他程式碼行以構成完整的陳述式時,例如當 for 陳述式的結尾是冒號時,如上所示。 在這些情況下,行提示字元會變更為 ...,表示您需要輸入該區塊的其他行,如上圖中的第四和第五行所示。 當您在空白行按下 Enter 時,互動式視窗會關閉該區塊,並在解譯器中執行它。

提示

互動式視窗是以一般的 Python 命令列 REPL 體驗為基礎加以改進,並會自動對屬於周圍範圍的陳述式做出縮排。 其記錄 (以向上鍵重新叫用) 也會提供多行項目,而命令列 REPL 僅提供單行。 互動式視窗也支援數個中繼命令。 所有中繼命令的開頭都是 $,而且您可以輸入 $help 來取得中繼命令清單,並輸入 $help <command> 來取得特定命令的詳細使用方式。

中繼命令 描述
$$ 插入註解,這對於在工作階段期間為程式碼做出註解非常有用。
$cls, $clear 清除編輯視窗的內容,但不變更記錄和執行內容。
$help 顯示命令清單,或特定命令的說明。
$load 從檔案載入命令並執行,直到完成為止。
$mod 將目前的範圍切換到指定的模組名稱。
$reset 將執行環境重設為初始狀態,但保留記錄。
$wait 至少等候指定的毫秒數。

命令也是可由 Visual Studio 延伸模組擴充,方法是實作及匯出 IInteractiveWindowCommand (範例)。

切換範圍

根據預設,專案互動式視窗的範圍是設定為專案的啟動檔案,就如同您從命令提示字元執行它一般。 針對獨立的檔案,則會將範圍設定為該檔案。 不過,您在 REPL 工作階段期間隨時可以從互動式視窗頂端的下拉式功能表變更範圍:

Screenshot showing the Interactive window scopes.

匯入模組之後 (例如輸入 import importlib),選項會出現在下拉式清單中,可切換為該模組中任何範圍。 互動式視窗中的訊息也會指出新範圍,讓您可以追蹤在工作階段期間抵達某特定狀態的方式。

在範圍中輸入 dir() 會顯示該範圍中的有效識別項,包括函數名稱、類別和變數。 例如,使用 import importlib 並接著使用 dir() 會顯示如下訊息:

Screenshot showing the Interactive window in the importlib scope selected.

傳送至互動式命令

除了直接在互動式視窗內操作之外,您也可以在編輯器中選取程式碼並以滑鼠右鍵按一下它,然後選擇 [傳送至互動式],或按 Ctrl+Enter

Screenshot showing Send to interactive menu command.

此命令對於反覆式或演化式程式碼開發非常實用 (包含在開發程式碼時對它進行測試)。 例如,當您將程式碼片段傳送到互動式視窗並查看其輸出之後,您可以按向上鍵以再次顯示該程式碼,修改它,然後按 Ctrl+Enter 來快速測試它 (在輸入末端按 Enter 將會執行它,但在輸入中間按 Enter 則會插入新的一行)。當您撰寫出所需的程式碼之後,您可以輕鬆地將它複製回您的專案檔案中。

提示

根據預設,Visual Studio 會移除 >>>...。從互動式視窗將程式碼貼入編輯器中時,REPL 會提示。 您可以在 [工具]>[選項]>[文字編輯器]>[Python]>[進階] 索引標籤上,使用 [貼上移除 REPL 提示] 選項變更此行為。 請參閱選項 - 其他選項

除了直接在互動式視窗內操作之外,您也可以在編輯器中選取程式碼並以滑鼠右鍵按一下它,然後選擇 [傳送至互動式],或按 Ctrl+Enter

Screenshot showing Send to interactive menu command.

此命令對於反覆式或演化式程式碼開發非常實用 (包含在開發程式碼時對它進行測試)。 例如,當您將程式碼片段傳送到互動式視窗並查看其輸出之後,您可以按向上鍵以再次顯示該程式碼,修改它,然後按 Ctrl+E 來快速測試它。 (在輸入末端按 Enter 將會執行它,但在輸入中間按 Enter 則會插入新的一行)。當您撰寫出所需的程式碼之後,您可以輕鬆地將它複製回您的專案檔案中。

提示

根據預設,Visual Studio 會移除 >>>...。從互動式視窗將程式碼貼入編輯器中時,REPL 會提示。 您可以在 [工具]>[選項]>[文字編輯器]>[Python]>[進階] 索引標籤上,使用 [貼上移除 REPL 提示] 選項變更此行為。 請參閱選項 - 其他選項

IntelliSense 行為

互動式視窗包含以即時物件為基礎的 IntelliSense,而不像程式碼編輯器的 IntelliSense,僅以原始程式碼分析為基礎。 這些建議在互動式視窗中更加正確,尤其是針對動態產生的程式碼。 缺點是,具有附加作用 (例如記錄訊息) 的函數可能會影響您的開發體驗。

如果此行為會造成問題,請在 [工具]>[選項]>[Python]>[互動式視窗] 底下的 [完成模式] 群組中變更設定,如選項 - 互動式視窗選項中所述。