Python コードを編集して Intellisense を使用する

開発者は、開発時間の多くをコード エディターで費やすため、Visual Studio での Python のサポートは、生産性を向上させる機能を提供しています。 機能には、IntelliSense 構文の強調表示、オートコンプリート、署名ヘルプ、メソッドのオーバーライド、検索、ナビゲーションが含まれます。

コード エディターは、Visual Studio のインタラクティブ ウィンドウと統合されています。 作業を行う際に、2 つのウィンドウ間でコードを簡単に交換できます。 詳細については、「チュートリアル」の「手順 3: 対話型 REPL ウィンドウを使用する」と、「インタラクティブ ウィンドウの使用 - [Interactive に送信] コマンド」を参照してください。

コードの特定のセクションに注意を集中するのに役立つ、アウトラインについての記事もご覧ください。 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 +Space) を選択することでいつでも表示できます。

Visual Studio エディターの Intellisense によるメンバー入力候補を示すスクリーンショット。

入力候補一覧が開いたら、方向キーまたはマウスを使用するか、入力を続けることによって目的の入力候補を検索できます。 多くの文字を入力するほど一覧が絞り込まれ、可能性の高い入力候補が表示されます。 次のようなショートカットも使用できます。

  • 名前の先頭ではない文字を入力する ('parse' を入力して 'argparse' を検索するなど)
  • 単語の先頭の数文字のみを入力する ('abc' を入力して 'AbstractBaseClass' を検索する、'air' を入力して 'as_integer_ratio' を検索するなど)
  • 文字を省略する ('b64' を入力して 'base64' を検索するなど)

次に例をいくつか示します。

Visual Studio エディターのメンバー入力候補とフィルタリングを示すスクリーンショット。

変数または値の後にピリオドを入力するとメンバー入力候補が自動的に表示され、可能性がある型のメソッドと属性が表示されます。 複数の型の可能性がある変数の場合は、すべての型のすべての候補が一覧に表示されます。 各入力候補がどの型でサポートされるかを示した追加情報も表示されます。 使用可能なすべての型が入力候補をサポートしている場合、注釈は表示されません。

Visual Studio エディターのメンバー入力候補と複数の型を示すスクリーンショット。

既定では、"dunder" メンバー (先頭および末尾に二重アンダースコアが付いたメンバー) は表示されません。 一般に、このようなメンバーに直接アクセスしてはいけません。 dunder を使用する必要がある場合は、先頭に二重アンダースコアを入力して、これらの入力候補を一覧に追加します。

Visual Studio エディターのプライベート dunder メンバー入力候補の型を示すスクリーンショット。

import および from ... import ステートメントでは、インポートできるモジュールの一覧が表示されます。 from ... import ステートメントを使用すると、指定したモジュールからインポートできるメンバーを含む一覧が生成されます。

Visual Studio エディターの import と from import 入力候補を示すスクリーンショット。

raise および except ステートメントでは、エラーの種類として可能性があるクラスの一覧が表示されます。 この一覧にはすべてのユーザー定義例外は含まれていない可能性がありますが、入力に適した組み込みの例外をすばやく見つけるのに役立ちます。

Visual Studio エディターの例外の入力候補を示すスクリーンショット。

@ (アット マーク) を選択するとデコレーターが開始され、可能性があるデコレーターが表示されます。 これらの項目の多くはデコレーターとして使用できません。 ライブラリのドキュメントを確認して、どのデコレーターを使用するかを判断します。

Visual Studio エディターのデコレーターの入力候補を示すスクリーンショット。

詳細については、「オプション - 入力候補の結果」を参照してください。

型ヒント

型ヒントは、Visual Studio 2017 バージョン 15.7 以降で使用できます。

Python 3.5 以降の "型ヒント" (PEP 484 (python.org) とは、引数、戻り値、およびクラス属性の型を示す関数およびクラスの注釈構文です。 IntelliSense では、そのような注釈がある関数呼び出し、引数、および変数上にマウス カーソルを置くと、型ヒントが表示されます。

次の例では、Vector クラスが型 List[float] として宣言されており、scale 関数にはその引数と戻り値の両方の型ヒントが含まれています。 その関数呼び出しの上にマウス カーソルを置くと、型ヒントが表示されます。

関数呼び出しの上にカーソルを置くと型ヒントが表示される様子を示すスクリーンショット。

次の例では、IntelliSense 入力候補のポップアップで Employee クラスの注釈付きの属性がどのように表示されるか示しています。

型ヒントを持つクラスの 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 で型ヒントを検証した結果の例を示すスクリーンショット。

Note

バージョン 3.5 より前の Python の場合、Visual Studio では、Typeshed "スタブ ファイル" (.pyi) を使用して提供される型ヒントも表示されます。 スタブ ファイルは、コードに直接型ヒントを含めたくない場合や、型ヒントを直接使用しないライブラリ用に型ヒントを作成する場合に使用できます。 詳細については、Mypy プロジェクト wiki で「Python モジュール用のスタブを作成する」を参照してください。

現在、Visual Studio ではコメントの型ヒントはサポートされていません。

シグネチャ ヘルプ

関数を呼び出すコードの作成中に始めかっこ ( を入力すると、シグネチャ ヘルプが表示されます。 使用可能なドキュメントとパラメーター情報が表示されます。 シグネチャ ヘルプにアクセスするには、関数呼び出し内でキーボード ショートカット (Ctrl+Shift+Space) を使用します。 表示される情報は関数のソース コード内のドキュメント文字列によって異なりますが、すべての既定値が含まれます。

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 の オブジェクト ブラウザーも使用できます。

ナビゲーション バーは各エディター ウィンドウの上部に表示され、2 つのレベルの定義リストを含みます。 左側のドロップダウンには、現在のファイルの最上位クラスと関数定義が含まれています。 右側のドロップダウンには、左側に表示されるスコープ内の定義の一覧が表示されます。 エディター内を移動すると、リストが現在のコンテキストを示すように更新され、これらのリストからエントリを選択してそのエントリに直接ジャンプすることもできます。

Visual Studio エディターのナビゲーション バーを示すスクリーンショット。

ヒント

ナビゲーション バーを非表示にするには、[ツール]>[オプション]>[テキスト エディター]>[Python]>[全般] に移動し、[設定]>[ナビゲーション バー] をオフにします。

[定義へ移動]

[定義へ移動] コマンドを使用すると、識別子 (関数名、クラス、変数など) の使用場所から、ソース コードが定義されている場所にすばやくジャンプできます。 コマンドを呼び出すには、識別子を右クリックして [定義へ移動] を選択するか、その識別子にキャレットを置いて F12 を押します。 このコマンドは、ソース コードが利用可能なコードと外部ライブラリ全体で機能します。 ライブラリのソース コードを利用できない場合に [定義へ移動] を使用すると、モジュール参照の関連する import ステートメントにジャンプするか、エラーが表示されます。

Visual Studio の [定義に移動] コマンドを示すスクリーンショット。

移動先

[編集]>[移動] コマンド (Ctrl+, キー) を使用すると、エディター内に検索ボックスが表示されます。ボックスに任意の文字列を入力すると、その文字列を含む関数、クラス、変数を定義するコード内の一致候補が表示されます。 この機能は [定義へ移動] の機能と似ていますが、識別子の使用場所を探す必要がありません。

その識別子の定義に移動するには、任意の名前をダブルクリックするか、方向キーで名前を選択してから Enter キーを押します。

Visual Studio の [ジャンプ] コマンドを示すスクリーンショット。

[すべての参照の検索]

[すべての参照の検索] 機能は、特定の識別子の定義場所と使用場所の両方 (インポートと代入を含む) を見つけるのに便利な方法です。 コマンドを呼び出すには、識別子を右クリックして [すべての参照の検索] を選択するか、その識別子にキャレットを置きいて Shift+F12 キーを押します。 一覧内の項目をダブルクリックすると、その場所に移動します。

Visual Studio の [すべての参照の検索] の結果を示すスクリーンショット。