Python コードの編集Edit Python code

開発者は、開発時間の多くをコード エディターで費やすため、Visual Studio での Python のサポートは、生産性を向上させる機能を提供しています。Because you spend much of your development time in the code editor, Python support in Visual Studio provides functionality to help you be more productive. 機能には、IntelliSense 構文の強調表示、オートコンプリート、署名ヘルプ、メソッドのオーバーライド、検索、ナビゲーションが含まれます。Features include IntelliSense syntax highlighting, auto-completion, signature help, method overrides, search, and navigation.

また、エディターは Visual Studio の対話型ウィンドウと統合され、この 2 つの間で簡単にコードを交換することができます。The editor is also integrated with the Interactive window in Visual Studio, making it easy to exchange code between the two. 詳細については、「チュートリアル」の「手順 3:対話型 REPL ウィンドウを使用する」と、対話型ウィンドウの使用 - 対話型コマンドにコードを送信するに関するページを参照してください。See Tutorial Step 3: Use the Interactive REPL window and Use the Interactive window - Send to Interactive command for details.

Visual Studio でのコードの編集に関する全般的な説明については、「コード エディターの機能」をご覧ください。For general documentation on editing code in Visual Studio, see Features of the code editor. また、コードの特定のセクションに注意を集中するのに役立つ、アウトラインについての記事もご覧ください。Also see Outlining, which helps you stay focused on particular sections of your code.

また、各モジュールで定義されている Python クラスとそれらのクラスで定義されている関数を調べるために、Visual Studio オブジェクト ブラウザーを使うことができます ( [表示] > [その他のウィンドウ] > [オブジェクト ブラウザー] の順に選択するか、Ctrl+W > J キーを押す)。You can also use the Visual Studio Object Browser (View > Other Windows > Object Browser or Ctrl+W > J) for inspecting Python classes defined in each module and the functions defined in those classes.

IntelliSenseIntelliSense

IntelliSense により、入力候補シグネチャ ヘルプクイック ヒントコードの色分け表示が提供されます。IntelliSense provides completions, signature help, quick info, and code coloring. Visual Studio 2017 バージョン 15.7 以降では、型ヒントもサポートされています。Visual Studio 2017 versions 15.7 and later also support type hints.

パフォーマンスを向上するために、Visual Studio 2017 バージョン 15.5 以前の IntelliSense は、プロジェクト内の各 Python 環境用に生成される入力候補データベースに依存しています。To improve performance, IntelliSense in Visual Studio 2017 version 15.5 and earlier depends on a completion database that's generated for each Python environment in your project. パッケージを追加、削除、更新した場合はデータベースの更新が必要になる可能性があります。Databases may need refreshing if you add, remove, or update packages. データベースの状態は、[IntelliSense] タブの [Python 環境] ウィンドウ (ソリューション エクスプローラーの兄弟ウィンドウ) に表示されます (「環境ウィンドウ リファレンス」を参照)。Database status is shown in the Python Environments window (a sibling of Solution Explorer) on the IntelliSense tab (see Environments window reference).

Visual Studio 2017 バージョン 15.6 以降では、別の手段を使用して、データベースに依存しない IntelliSense 入力候補が提供されています。Visual Studio 2017 version 15.6 and later uses a different means to provide IntelliSense completions that are not dependent on the database.

入力候補Completions

入力候補は、エディター内の現在の場所に入力するのに適している可能性があるステートメント、識別子、その他の単語として表示されます。Completions appear as statements, identifiers, and other words that may be appropriately entered at the current location in the editor. 一覧に表示される項目はコンテキストに基づいており、誤った選択肢や不適切な選択肢を除くようにフィルター処理されています。What's shown in the list is based on context and is filtered to omit incorrect or distracting options. 入力候補は別のステートメント (import など) や演算子 (ピリオドを含む) を入力したときによく表示されますが、Ctrl+J > Space キーを押すことでいつでも表示できます。Completions are often triggered by typing different statements (such as import) and operators (including a period), but you can have them appear at anytime by typing Ctrl+J > Space.

Visual Studio エディターのメンバー入力候補

入力候補一覧が開いたら、方向キーまたはマウスを使用するか、入力を続けることによって目的の入力候補を検索できます。When a completion list is open, you can search for the completion you want using the arrow keys, the mouse, or by continuing to type. 多くの文字を入力するほど一覧が絞り込まれ、可能性の高い入力候補が表示されます。As you type more letters, the list is further filtered to show likely completions. 次のようなショートカットも使用できます。You can also use shortcuts such as:

  • 名前の先頭ではない文字を入力する ('parse' を入力して 'argparse' を検索するなど)Typing letters that are not at the start of the name, such as 'parse' to find 'argparse'
  • 単語の先頭の数文字のみを入力する ('abc' を入力して 'AbstractBaseClass' を検索する、'air' を入力して 'as_integer_ratio' を検索するなど)Typing only letters that are at the start of words, such as 'abc' to find 'AbstractBaseClass' or 'air' to find 'as_integer_ratio'
  • 文字をスキップする ('b64' を入力して 'base64' を検索するなど)Skipping letters, such as 'b64' to find 'base64'

以下に、いくつかの例を示します。Some examples:

Visual Studio エディターのメンバー入力候補とフィルタリング

変数または値の後にピリオドを入力するとメンバー入力候補が自動的に表示され、可能性がある型のメソッドと属性が表示されます。Member completions appear automatically when you type a period after a variable or value, along with the methods and attributes of the potential types. 複数の型の可能性がある変数の場合は、すべての型のすべての候補が一覧に表示され、各入力候補がどの型でサポートされるかを示した追加情報も表示されます。If a variable could be more than one type, the list includes all possibilities from all types, with extra information to indicate which types support each completion. 入力候補がすべての型でサポートされる場合は、注釈なしで表示されます。Where a completion is supported by all possible types, it is shown without annotation.

Visual Studio エディターのメンバー入力候補と複数の型

既定では、"dunder" メンバー (先頭および末尾にダブル アンダースコアが付いたメンバー) は表示されません。By default, "dunder" members (members beginning and ending with a double underscore) are not shown. 一般に、このようなメンバーに直接アクセスしてはいけません。In general, such members should not be accessed directly. しかし、必要な場合は、先頭に二重アンダー スコアを入力すると、これらの入力候補が一覧に追加されます。If you need one, however, typing the leading double underscore adds these completions to the list:

Visual Studio エディターのプライベートのメンバー入力候補

import および from ... import ステートメントでは、インポートできるモジュールの一覧が表示されます。The import and from ... import statements display a list of modules that can be imported. from ... import を使用すると、一覧には指定したモジュールからインポートできるメンバーが含まれています。With from ... import, the list includes members that can be imported from the specified module.

Visual Studio エディターのインポートの入力候補

raise および except ステートメントでは、エラーの種類として可能性があるクラスの一覧が表示されます。The raise and except statements display lists of classes likely to be error types. この一覧にはすべてのユーザー定義例外は含まれていない可能性がありますが、入力に適した組み込みの例外をすばやく見つけるのに役立ちます。The list may not include all user-defined exceptions, but helps you find suitable built-in exceptions quickly:

Visual Studio エディターの例外の入力候補

@ を入力するとデコレーターが開始され、可能性があるデコレーターが表示されます。Typing @ starts a decorator and shows potential decorators. これらの項目の多くはデコレーターとして使用できないため、ライブラリのドキュメントを確認して、どれを使用するかを判断する必要があります。Many of these items aren't usable as decorators; check the library documentation to determine which to use.

Visual Studio エディターのデコレーターの入力候補

ヒント

入力候補の動作は、 [ツール] > [オプション] > [テキスト エディター] > [Python] > [詳細設定] で構成できます。You can configure the behavior of completions through Tools > Options > Text Editor > Python > Advanced. この設定の [検索文字列に基づいてリストをフィルターする] では、入力の際に入力候補がフィルター処理されます (既定ではオンになっています)。また、 [メンバーの入力候補にメンバーの共通部分を表示する] では、可能性のあるすべての型でサポートされている入力候補のみが表示されます (既定ではオフになっています)。Among these, Filter list based on search string applies filtering of completion suggestions as you type (default is checked), and Member completion displays intersection of members shows only completions that are supported by all possible types (default is unchecked). Options - completion results」(オプション - メンバー入力候補の結果) を参照してください。See Options - completion results.

型ヒントType hints

Visual Studio 2017 バージョン 15.7 以降。Visual Studio 2017 version 15.7 and later.

Python 3.5 以降の "型ヒント" (PEP 484 (python.org) とは、引数、戻り値、およびクラス属性の型を示す関数およびクラスの注釈構文です。"Type hints" in Python 3.5+ (PEP 484 (python.org) is an annotation syntax for functions and classes that indicate the types of arguments, return values, and class attributes. IntelliSense では、そのような注釈がある関数呼び出し、引数、および変数上にマウス カーソルを置くと、型ヒントが表示されます。IntelliSense displays type hints when you hover over functions calls, arguments, and variables that have those annotations.

次の例では、Vector クラスが List[float] と宣言されており、scale 関数にはその引数と戻り値の両方の型ヒントが含まれています。In the example below, the Vector class is declared as List[float], and the scale function contains type hints for both its arguments and return value. その関数呼び出しの上にマウス カーソルを置くと、型ヒントが表示されます。Hovering over a call to that function shows the type hints:

型ヒントを表示するために関数呼び出しの上にマウスを置く

次の例では、IntelliSense 入力候補のポップアップで Employee クラスの注釈付きの属性がどのように表示されるか示しています。In the following example, you can see how the annotated attributes of the Employee class appear in the IntelliSense completion popup for an attribute:

型ヒントを示す IntelliSense の入力候補

エラーは通常実行時まで表示されないため、プロジェクト全体の型ヒントを検証すると役立ちます。It's also helpful to validate type hints throughout your project, because errors won't normally appear until run time. このために、Visual Studio では、ソリューション エクスプローラー[Python] > [Mypy の実行] のコンテキスト メニュー コマンドを通じて、業界標準の MyPy ツールが統合されています。For this purpose, Visual Studio integrates the industry standard MyPy tool through the context menu command Python > Run Mypy in Solution Explorer:

ソリューション エクスプローラーで MyPy コンテキスト メニュー コマンドを実行する

コマンドを実行すると、必要に応じて mypy パッケージのインストールが求められます。Running the command prompts you to install the mypy package, if needed. すると、Visual Studio では mypy が実行され、プロジェクトのすべての Python ファイルで型ヒントが検証されます。Visual Studio then runs mypy to validate type hints in every Python file in the project. エラーは Visual Studio の [エラー一覧] ウィンドウに表示されます。Errors appear in the Visual Studio Error List window. ウィンドウでアイテムを選択すると、コードの適切な行に移動します。Selecting an item in the window navigates to the appropriate line in your code.

単純な例として、次の関数定義には、input 引数は str 型であることを示す型ヒントが含まれています。それに対し、その関数呼び出しは引数を渡そうとします。As a simple example, the following function definition contains a type hint to indicate that the input argument is type str, whereas the call to that function attempts to pass an integer:

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

commas_to_colons(1)

このコードで [Mypy の実行] コマンドを使用すると、次のエラーが生成されます。Using the Run Mypy command on this code generates the following error:

型ヒントを検証する mypy の結果例

ヒント

バージョン 3.5 より前の Python の場合、Visual Studio では、Typeshed "スタブ ファイル" ( .pyi) を使用して提供される型ヒントも表示されます。For versions of Python before 3.5, Visual Studio also displays type hints that you supply through Typeshed stub files (.pyi). スタブ ファイルは、コードに直接型ヒントを含めたくない場合や、型ヒントを直接使用しないライブラリ用に型ヒントを作成する場合に使用します。You can use stub files whenever you don't want to include type hints directly in your code, or when you want to create type hints for a library that doesn't use them directly. 詳細については、mypy プロジェクト wiki で「Create Stubs for Python Modules」 (Python モジュール用のスタブを作成する) を参照してください。For more information, see Create stubs for Python modules in the mypy project wiki.

現時点では、Visual Studio ではコメントの型ヒントはサポートされていません。At present, Visual Studio doesn't support type hints in comments.

ヒント

バージョン 3.5 より前の Python の場合、Visual Studio では、Typeshed "スタブ ファイル" ( .pyi) を使用して提供される型ヒントも表示されます。For versions of Python before 3.5, Visual Studio also displays type hints that you supply through Typeshed stub files (.pyi). スタブ ファイルは、コードに直接型ヒントを含めたくない場合や、型ヒントを直接使用しないライブラリ用に型ヒントを作成する場合に使用します。You can use stub files whenever you don't want to include type hints directly in your code, or when you want to create type hints for a library that doesn't use them directly. 詳細については、mypy プロジェクト wiki で「Create Stubs for Python Modules」 (Python モジュール用のスタブを作成する) を参照してください。For more information, see Create stubs for Python modules in the mypy project wiki.

Visual Studio には、Python 2 および 3 用の Typeshed ファイルのバンドル セットが含まれているので、追加のダウンロードは必要ありません。Visual Studio includes a bundles set of Typeshed files for Python 2 and 3, so additional downloads aren't necessary. ただし、異なるファイルのセットを使いたい場合は、 [ツール] > [オプション] > [Python] > [言語サーバー] オプションでパスを指定できます。However, if you want to use a different set of files, you can specify the path in the Tools > Options > Python > Language Server options. 言語サーバーのオプションに関する記事をご覧ください。See Options - Language Server.

現時点では、Visual Studio ではコメントの型ヒントはサポートされていません。At present, Visual Studio doesn't support type hints in comments.

シグネチャ ヘルプSignature help

関数を呼び出すコードの作成中に始め ( を入力するとシグネチャ ヘルプが表示され、利用できるドキュメントとパラメーター情報が表示されます。When writing code that calls a function, signature help appears when you type the opening ( and displays available documentation and parameter information. これは関数呼び出し内で Ctrl+Shift+Space キーを押して表示することもできます。You can also make it appear with Ctrl+Shift+Space inside a function call. 表示される情報は関数のソース コード内のドキュメント文字列によって異なりますが、すべての既定値が含まれます。The information displayed depends on the documentation strings in the function's source code, but includes any default values.

Visual Studio エディターのシグネチャ ヘルプ

ヒント

シグネチャ ヘルプを無効にするには、 [ツール] > [オプション] > [テキスト エディター] > [Python] > [全般] に移動し、 [ステートメント入力候補] > [パラメーター情報] をオフにします。To disable signature help, go to Tools > Options > Text Editor > Python > General and clear Statement completion > Parameter information.

クイック ヒントQuick info

識別子にマウス ポインターを置くと、クイック ヒントが表示されます。Hovering the mouse pointer over an identifier displays a Quick Info tooltip. クイック ヒントには、識別子に応じて、可能性のある値または型、利用できるドキュメント、戻り値の型、定義の場所が表示されます。Depending on the identifier, Quick Info may display the potential values or types, any available documentation, return types, and definition locations:

Visual Studio エディターのクイック ヒント

コードの色分け表示Code coloring

コードの色分け表示では、コード分析の情報を使用して、変数、ステートメント、その他のコード部分を色分けして示します。Code coloring uses information from code analysis to color variables, statements, and other parts of your code. たとえば、モジュールまたはクラスを参照する変数を関数やその他の値とは異なる色で表示したり、パラメーター名をローカル変数やグローバル変数とは異なる色で表示したりできますFor example, variables that refer to modules or classes may be shown in a different color than functions or other values, and parameter names appear in a different color than local or global variables. (既定では、関数は太字では表示されません)。(By default, functions are not shown in bold):

Visual Studio エディターのコードと構文の色分け表示

色をカスタマイズするには、[ツール] > [オプション] > [環境] > [フォントおよび色] に移動し、[表示アイテム] の一覧で Python のエントリを変更します。To customize the colors, go to Tools > Options > Environment > Fonts and Colors and modify the Python entries in the Display items list:

Visual Studio のフォント オプションと色オプション

ヒント

コードの色分け表示を無効にするには、 [ツール] > [オプション] > [テキスト エディター] > [Python] > [詳細設定] に移動し、 [その他のオプション] > [Color names based on type](種類に基づく色の名前) をオフにします。To disable code coloring, go to Tools > Options > Text Editor > Python > Advanced and clear Miscellaneous Options > Color names based on type. Options - Miscellaneous Options」(オプション ∸ その他のオプション) を参照してください。See Options - Miscellaneous options.

コード スニペットCode snippets

コード スニペットはファイルに挿入できるコード フラグメントであり、ショートカットを入力して Tab キーを押すか、 [編集] > [IntelliSense] > [コード スニペットの挿入][ブロックの挿入] コマンドを使用して [Python] を選び、目的のスニペットを選択することで、ファイルに挿入できます。Code snippets are fragments of code that can be inserted into your files by typing a shortcut and pressing Tab, or using the Edit > IntelliSense > Insert Code Snippet and Surround With commands, selecting Python, then selecting the desired snippet.

たとえば、class は、クラス定義を挿入するコード スニペットのショートカットです。For example, class is a shortcut for a code snippet that inserts a class definition. class を入力すると、そのスニペットが自動入力候補一覧に表示されます。You see the snippet appear in the auto-completion list when you type class:

class ショートカットに対応するコード スニペット

Tab キーを押すと、クラスの残りの部分が生成されます。Pressing Tab generates the rest of the class. 強調表示されたフィールド間を Tab キーで移動して名前と基底クラスの一覧を上書きし、Enter キーを押して本文の入力を開始できます。You can then type over the name and bases list, moving between the highlighted fields with Tab, then press Enter to begin typing the body.

補完するコード スニペットの領域の強調表示

[編集] > [IntelliSense] > [コード スニペットの挿入] メニュー コマンドを使用する場合は、次のように、まず、 [Python] を選択してからスニペットを選びます。When you use the Edit > IntelliSense > Insert Code Snippet menu command, you first select Python, then select a snippet:

[コード スニペットの挿入] コマンドによるコード スニペットの選択

[編集] > [IntelliSense] > [ブロックの挿入] コマンドも、テキスト エディター内の現在の選択範囲を、選択済みの構造体の要素内に配置します。The Edit > IntelliSense > Surround With command, similarly, places the current selection in the text editor inside a chosen structural element. たとえば、次のようなコードがあるとします。For example, suppose you had a bit of code like the following:

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

このコードを選択し、 [ブロックの挿入] コマンドを選択すると、使用可能なスニペットの一覧が表示されます。Selecting this code and choosing the Surround With command displays a list of available snippets. 一覧から def を選択すると、選択済みのコードが関数定義内に配置され、強調表示されている関数の名前と引数の間を Tab キーを使用して移動できます。Choosing def from the list places the selected code within a function definition, and you can use the Tab key to navigate between the highlighted function name and arguments:

コード スニペットに対する [ブロックの挿入] コマンドの使用

利用可能なスニペットを調べるExamine available snippets

利用可能なコード スニペットは、コード スニペット マネージャーで確認できます。これを開くには、 [ツール] > [コード スニペット マネージャー] メニュー コマンドを使用し、言語として [Python] を選択します。You can see the available code snippets in the Code Snippets Manager, opened by using Tools > Code Snippets Manager menu command and selecting Python as the language:

Visual Studio のコード スニペット マネージャー

独自のスニペットを作成する場合は、「チュートリアル:コード スニペットを作成する」を参照してください。To create your own snippets, see Walkthrough: Create a code snippet.

便利なコード スニペットを作成したので共有したいとお考えの場合は、ぜひ gist に投稿してマイクロソフトまでお知らせくださいIf you write a great code snippet that you'd like to share, feel free to post it in a gist and let us know. Visual Studio の将来のリリースに含めさせていただく可能性があります。We may be able to include it in a future release of Visual Studio.

Visual Studio の Python のサポートとして、ソース コードが提供されているライブラリを含め、ナビゲーション バー [定義へ移動] [移動] [すべての参照の検索] など、コード内をすばやく移動するためのいくつかの手段が用意されています。Python support in Visual Studio provides several means to quickly navigate within your code, including libraries for which source code is available: the navigation bar, Go To Definition, Navigate To, and Find All References. また、Visual Studio の オブジェクト ブラウザーも使用できます。You can also use the Visual Studio Object Browser.

ナビゲーション バーは各エディター ウィンドウの上部に表示され、2 つのレベルの定義リストを含みます。The navigation bar is displayed at the top of each editor window and includes a two-level list of definitions. 左側のドロップダウン リストには、現在のファイル内の最上位のクラスと関数の定義が表示されます。右側のドロップダウン リストには、左側に表示されているスコープ内の定義のリストが表示されます。The left drop-down contains top-level class and function definitions in the current file; the right drop-down displays a list of definitions within the scope shown in the left. エディター内を移動すると、リストが現在のコンテキストを示すように更新され、これらのリストからエントリを選択してそのエントリに直接ジャンプすることもできます。As you move around in the editor, the lists update to show your current context, and you can also select an entry from these lists to jump directly to.

Visual Studio エディターのナビゲーション バー

ヒント

ナビゲーション バーを非表示にするには、 [ツール] > [オプション] > [テキスト エディター] > [Python] > [全般] に移動し、 [設定] > [ナビゲーション バー] をオフにします。To hide the navigation bar, go to Tools > Options > Text Editor > Python > General and clear Settings > Navigation bar.

[定義へ移動]Go To Definition

[定義へ移動] を使用すると、識別子 (関数名、クラス、変数など) の使用場所から、その識別子が定義されているソース コードにすばやくジャンプできます。Go To Definition quickly jumps from the use of an identifier (such as a function name, class, or variable), to the source code where it's defined. これは、識別子を右クリックして [定義へ移動] を選択するか、識別子にキャレットを置いて F12 キーを押すと起動されます。You invoke it by right-clicking an identifier and selecting Go To Definition or, by placing the caret in the identifier and pressing F12. この機能は、ソース コードが利用可能ならばコードと外部ライブラリ全体で機能します。It works across your code and external libraries provided that source code is available. ライブラリのソース コードを利用できない場合に [定義へ移動] を使用すると、モジュール参照の関連する import ステートメントにジャンプするか、エラーが表示されます。If library source code is not available, Go To Definition jumps to the relevant import statement for a module reference, or displays an error.

Visual Studio の [定義へ移動] コマンド

[編集] > [移動] コマンド (Ctrl+ , キー) を使用すると、エディター内に検索ボックスが表示されます。ボックスに任意の文字列を入力すると、その文字列を含む関数、クラス、変数を定義するコード内の一致候補が表示されます。The Edit > Navigate To command (Ctrl+,) displays a search box in the editor where you can type any string and see possible matches in your code that defines a function, class, or variable containing that string. この機能は [定義へ移動] の機能と似ていますが、識別子の使用場所を探す必要がありません。This feature provides a similar capability as Go To Definition but without having to locate a use of an identifier.

任意の名前をダブルクリックするか、方向キーで選択して Enter キーを押すと、その識別子の定義に移動します。Double-clicking any name, or selecting with arrow keys and Enter, navigates to the definition of that identifier.

Visual Studio の [移動] コマンド

[すべての参照の検索]Find All References

[すべての参照の検索] は、特定の識別子の定義場所と使用場所の両方 (インポートと代入を含む) を見つけるのに便利な方法です。Find All References is a helpful way of discovering where any given identifier is both defined and used, including imports and assignments. これは、識別子を右クリックして [すべての参照の検索] を選択するか、識別子にキャレットを置いて Shift+F12 キーを押すと起動されます。You invoke it by right-clicking an identifier and selecting Find All References, or by placing the caret in the identifier and pressing Shift+F12. 一覧内の項目をダブルクリックすると、その場所に移動します。Double-clicking an item in the list navigates to its location.

[すべての参照の検索] の結果

関連項目See also