編輯 Python 程式碼並使用 Intellisense

因為您大部分的開發時間都花在程式碼編輯器中,所以 Visual Studio 中的 Python 支援提供的功能可協助您提高生產力。 功能包括了 IntelliSense 語法反白顯示、自動完成、簽章說明、方法覆寫、搜尋和瀏覽。

程式碼編輯器也與 Visual Studio 中的互動式視窗整合。 當您工作時,很容易在兩個視窗之間交換程式碼。 如需詳細資訊,請參閱教學課程步驟 3:使用互動式 REPL 視窗使用互動式視窗 - 傳送至互動式命令

大綱有助您專注於特定的程式碼區段。 如需有關在 Visual Studio 中編輯程式碼的一般文件,請參閱程式碼編輯器的功能

使用 Visual Studio [物件瀏覽器] 可檢查每個模組中定義的 Python 類別,以及這些類別中定義的函數。 可以在 [檢視] 功能表上或使用鍵盤快速鍵 Ctrl+Alt+J 來存取此功能。

使用 Intellisense 功能

IntelliSense 提供自動完成簽章說明快速諮詢程式碼著色。 Visual Studio 2017 15.7 版和更新版本也支援類型提示

為了改善效能,Visual Studio 2017 15.5 版及較舊版本中之 IntelliSense 會仰賴為您專案中每個 Python 環境所產生的完成資料庫。 如果新增、移除或更新套件,則可能需要重新整理資料庫。 資料庫狀態會顯示在 [IntelliSense] 索引標籤上的 [Python 環境] 視窗中 ([方案總管] 的同層級)。如需詳細資訊,請參閱環境視窗參考

Visual Studio 2017 15.6 版及更新版本會使用不同的方式,在不仰賴資料庫的情況下為 IntelliSense 提供完成。

自動完成

自動完成會顯示為陳述式、識別碼和其他適合在編輯器目前的位置中輸入的文字。 Intellisense 會根據內容填入選項清單,並篩選不正確的或分散的項目。 輸入不同的陳述式 (例如 import) 和運算子 (包括句點) 通常會觸發完成,但您隨時可以選取鍵盤快速鍵 Ctrl+J +空格讓它們顯示。

透過 Visual Studio 編輯器中的 Intellisense 顯示成員完成情況的螢幕擷取畫面。

自動完成清單開啟後,您可以使用方向鍵、滑鼠來搜尋您想要的自動完成內容,或是繼續輸入。 隨著您輸入更多字元,清單會進一步篩選以顯示可能的自動完成內容。 您也可以使用快速鍵,例如:

  • 輸入不在名稱開頭的字母,例如,輸入 'parse' 以尋找 'argparse'
  • 只輸入每個字組開頭的字母,例如,輸入 'abc' 以尋找 'AbstractBaseClass',或輸入 'air' 以尋找 'as_integer_ratio'
  • 略過字母 (例如 'b64') 以尋找 'base64'

以下列出一些範例:

顯示 Visual Studio 編輯器中具篩選的成員完成情況的螢幕擷取畫面。

當您在變數或值之後鍵入句點時,會自動顯示成員自動完成內容,並顯示可能類型的方法和屬性。 如果變數可以為多個類型,清單會包含所有類型的所有可能性。 會顯示額外的資訊,以指出哪些類型支援每個完成。 當所有可能的類型都支援完成時,不會顯示任何標註。

顯示 Visual Studio 編輯器中多個類型的成員完成情況的螢幕擷取畫面。

預設不顯示 "dunder" 成員 (開頭和結尾是雙底線的成員)。 一般情況下,這類成員應該不能直接存取。 如果需要使用 dunder,鍵入前置雙底線就會將這些完成情況新增至清單:

顯示 Visual Studio 編輯器中私人 dunder 成員完成情況的螢幕擷取畫面。

importfrom ... import 陳述式會顯示一份可以匯入的模組清單。 from ... import 陳述式會產生一個清單,它包括可從指定模組匯入的成員。

顯示 Visual Studio 編輯器中匯入和匯出完成情況的螢幕擷取畫面。

raiseexcept 陳述式會顯示一份可能錯誤類型的類別清單。 該清單可能不包含所有使用者定義的例外狀況,但它會協助您快速尋找適合的內建例外狀況:

顯示 Visual Studio 編輯器中例外狀況完成情況的螢幕擷取畫面。

選取 @ 符號 (at) 會啟動裝飾項目,並顯示潛在的裝飾項目。 其中許多項目無法作為裝飾項目使用。 請檢查庫文件,以判定要使用的裝飾項目。

顯示 Visual Studio 編輯器中裝飾項目完成情況的螢幕擷取畫面。

如需詳細資訊,請參閱選項 - 完成情況結果

類型提示

Visual Studio 2017 15.7 版和更新版本提供類型提示。

Python 3.5 以上版本 (PEP 484 (python.org) 中的「類型提示」是表示引數類型、傳回值和類別屬性的函式和類別的註釋語法。 當您將滑鼠停留在具有這些註釋的函式呼叫、引數和變數上方時,IntelliSense 就會顯示類型提示。

在下列範例中,Vector 類別會宣告為類型 List[float],而 scale 函數包含其引數和傳回值的類型提示。 將滑鼠停留在該函式呼叫上方即會顯示類型提示:

顯示如何將滑鼠停留在函數呼叫上方來顯示類型提示的螢幕擷取畫面。

在接下來的範例中,您可以看到 Employee 類別的標註屬性如何顯示在屬性的 IntelliSense 完成快顯視窗中:

顯示具有類型提示之類別的 IntelliSense 完成情況的螢幕擷取畫面。

在整個專案中驗證類型提示也很有用,因為通常要到執行階段之後才會出現錯誤。 基於此目的,Visual Studio 透過 [方案總管] 中的操作功能表命令 [Python]>[執行 Mypy] 整合業界標準的 MyPy 工具:

顯示方案總管中 Python 專案的可用 linting 命令的螢幕擷取畫面。

必要的話,執行命令會提示您安裝 Mypy 套件。 Visual Studio 接著會執行 Mypy 來驗證專案中每個 Python 檔案的類型提示。 錯誤會顯示在 Visual Studio 的 [錯誤清單] 視窗中。 在視窗中選取項目會巡覽至程式碼中的適當行。

簡單舉例如下,下列函式定義包含類型提示,指出 input 引數是類型 str,而該函式的呼叫會嘗試傳遞整數:

def commas_to_colons(input: str):
    items = input.split(',')
    items = [x.strip() for x in items]
    return ':'.join(items)

commas_to_colons(1)

對這段程式碼使用 [執行 Mypy] 命令會產生下列錯誤:

顯示 Mypy 驗證類型提示範例結果的螢幕擷取畫面。

注意

如果是 3.5 之前的 Python 版本,Visual Studio 也會顯示您透過「Typeshed 虛設常式檔案」 (.pyi) 提供的類型提示。 當您不想在程式碼中直接包含類型提示,或者為不直接使用類型提示的程式庫建立類型提示時,就可以使用虛設常式檔案。 如需詳細資訊,請參閱 Mypy 專案 Wiki 中的建立 Python 模組的虛設常式

Visual Studio 目前不支援註解的類型提示。

簽章說明

撰寫呼叫函數的程式碼時,簽章說明會在您鍵入左括弧 ( 時顯示。 它會顯示可用的文件和參數資訊。 您可以在函數呼叫中使用鍵盤快速鍵 Ctrl+Shift+空格來存取簽章說明。 顯示的資訊取決於函式的原始程式碼中的文件字串,但會包括任何預設值。

顯示 Visual Studio 編輯器中簽章說明的螢幕擷取畫面。

提示

若要停用簽章說明,請轉至 [工具]>[選項]>[文本編輯器]>[Python]>[一般]。 清除 [陳述式完成]>[參數資訊] 核取方塊。

快速諮詢

將滑鼠指標停留在識別項會顯示快速諮詢工具提示。 依識別項而定,快速諮詢可能會顯示可能的值或類型、任何可用的文件、傳回型別和定義位置:

顯示 Visual Studio 編輯器中 [快速資訊] 顯示資訊的螢幕擷取畫面。

程式碼著色

程式碼著色使用程式碼分析中的資訊,將變數、陳述式及您的程式碼的其他部分著色。 參考模組或類別的變數可能會以與函數或其他值不同的色彩顯示。 參數名稱可能會以不同於本機或全域變數的色彩顯示。 根據預設,函數不會以粗體顯示。

顯示 Visual Studio 編輯器中程式碼和語法色彩的螢幕擷取畫面。

若要自訂色彩,請轉至 [工具]>[選項]>[環境]>[字型和色彩]。 在 [顯示項目] 清單中,修改所需的 Python 項目:

顯示 Visual Studio 中 [字型] 和 [色彩] 選項的螢幕擷取畫面。

插入程式碼片段

程式碼片段是一個片段的程式碼,可使用鍵盤快速鍵並選取 Tab 鍵,將其插入到您的檔案中。也可使用 [編輯]>[IntelliSense]>[插入程式碼片段] 及 [環繞方式],然後選取 [Python],並選取所需的片段。

例如,class 為插入類別定義之程式碼片段的捷徑。 您會在輸入 class 時,於自動完成清單中看見該程式碼片段:

顯示類別捷徑程式碼片段的螢幕擷取畫面。

選取 Tab 鍵便能產生剩餘的類別。 接著,您可以在名稱和基底清單上鍵入,使用 Tab 鍵在反白顯示的欄位之間移動,並選取 Enter 鍵以開始鍵入主體。

顯示待完成程式碼片段區域之反白顯示的螢幕擷取畫面。

當您使用 [編輯]>[IntelliSense]>[插入程式碼片段] 功能表命令時,必須先選取 [Python],再選取所需的片段:

顯示如何透過 [插入程式碼片段] 命令選取程式碼片段的螢幕擷取畫面。

[編輯]>[IntelliSense]>[環繞方式] 命令也會將目前的選取項目置於文字編輯器中指定的結構元素內。 假設您有類似以下的程式碼片段:

sum = 0
for x in range(1, 100):
    sum = sum + x

選取此程式碼並選取 [以此環繞] 命令,將會顯示可用程式碼片段清單。 從片段清單中選擇 def 會將選取的程式碼放在函數定義內。 您可以使用 Tab 鍵,在反白顯示的函數名稱和引數之間瀏覽:

螢幕擷取畫面顯示如何使用程式碼片段的 [環繞方式] 命令。

檢查可用的程式碼片段

您可以在 [程式碼片段管理器] 中看到可用的程式碼片段。 從 [工具]>[程式碼片段管理器] 中存取此功能,並選取 [Python] 作為語言:

顯示 Visual Studio 中程式碼片段管理器的螢幕擷取畫面。

若要建立您自己的程式碼片段,請參閱逐步解說︰建立程式碼片段

如果您寫了出色的程式碼片段並想與人分享,請隨意張貼在 Gist 中並聯絡我們。 也許我們在未來的 Visual Studio 版本中可以納入這些片段。

Visual Studio 中的 Python 支援提供幾種快速瀏覽程式碼的方法,包括提供原始程式碼的程式庫。 您可以使用導覽列轉至定義轉至尋找所有參考命令的原始程式碼來尋找程式庫。 您也可以使用 Visual Studio 的 [物件瀏覽器]

導覽列會顯示在每個編輯器視窗頂端,並包含兩個層級的定義清單。 左側下拉式清單包含目前檔案中的最上層類別和函數定義。 右側下拉式清單會顯示左側所顯示範圍內的定義清單。 當您在編輯器中移動時,這些清單會更新以顯示您目前的內容,您也可以從這些清單中選取一個項目以直接跳至該處。

顯示 Visual Studio 編輯器中導覽列的螢幕擷取畫面。

提示

若要隱藏導覽列,請移至 [工具]>[選項]>[文字編輯器]>[Python]>[一般],然後清除 [設定]>[導覽列]

移至定義

[轉至定義] 命令可從使用的識別碼 (例如函數名稱、類別或變數) 快速跳至原始程式碼定義的位置。 若要叫用該命令,請以滑鼠右鍵按一下某個識別碼,然後選取 [轉至定義],或將插入點放在識別碼中並按 F12 鍵。 該命令適用於您的程式碼和提供原始程式碼的外部程式庫。 如果沒有程式庫原始程式碼,[移至定義] 會跳至模組參考的相關 import 陳述式,或是顯示錯誤。

顯示 Visual Studio 中的 [轉至定義] 的螢幕擷取畫面。

[編輯]>[轉至] 命令 (Ctrl+,) 會在編輯器中顯示搜尋方塊,您可在其中鍵入任何字串,並在定義函數、類別或包含該字串之變數的程式碼中看到可能的相符項目。 此功能提供與 [移至定義] 類似的功能,但不需尋找使用的識別碼。

若要瀏覽識別碼的定義,請按兩下任一名稱,或使用方向鍵選取名稱並按 Enter 鍵。

顯示 Visual Studio 中的 [轉至] 命令的螢幕擷取畫面。

尋找所有參考

[尋找所有參考] 功能是探索在何處同時定義和使用 (包括匯入和指派) 任一指定識別碼的有用方式。 若要叫用該命令,請以滑鼠右鍵按一下某個識別碼,然後選取 [尋找所有參考],或將插入點放在識別碼中並按 Shift+F12。 按兩下清單中的項目會巡覽至其位置。

顯示 Visual Studio 中 [尋找所有參考] 結果的螢幕擷取畫面。