Python 対話型ウィンドウの使用Working with the Python Interactive Window

Visual Studio において各 Python 環境に用意されている対話型の read-evaluate-print loop (REPL) ウィンドウを使うと、コマンド ラインの python.exe で実行する REPL が向上します。Visual Studio provides an interactive read-evaluate-print loop (REPL) window for each of your Python environments, which improves upon the REPL you get with python.exe on the command line. ([表示] > [その他のウィンドウ] > [<環境>インタラクティブ] メニュー コマンドで開いた) 対話型ウィンドウを使用すると、任意の Python コードを入力し、すぐに結果を確認することができます。The interactive window (opened with the View > Other Windows > <environment> Interactive menu commands) lets you enter arbitrary Python code and see immediate results. このコーディング方法は、API とライブラリの学習と実習、およびプロジェクトに含める作業コードを対話形式で開発するのに役立ちます。This way of coding helps you learn and experiment with APIs and libraries, and to interactively develop working code to include in your projects.

Python Interactive ウィンドウ

Visual Studio では、複数の Python REPL モードから選ぶことができます。Visual Studio has a number of Python REPL modes to choose from:

REPLREPL 説明Description 編集Editing デバッグDebugging イメージImages
標準Standard 既定の REPL、Python と直接対話Default REPL, talks to Python directly 標準的な編集 (複数行など)。Standard editing (multiline, etc.). はい、$attach を使用Yes, via $attach いいえNo
デバッグDebug 既定の REPL、デバッグ対象の Python プロセスと対話Default REPL, talks to debugged Python process 標準的な編集Standard editing デバッグのみOnly debugging いいえNo
IPythonIPython REPL は IPython のバックエンドと対話REPL talks to IPython backend IPython コマンド、Pylab の利便性IPython commands, Pylab conveniences いいえNo はい、REPL でインラインYes, inline in REPL
IPython (Pylab なし)IPython w/o Pylab REPL は IPython のバックエンドと対話REPL talks to IPython backend 標準的な IPythonStandard IPython いいえNo はい、別のウィンドウYes, separate window

このトピックでは、REPL の標準モードとデバッグ モードのについて説明します。This topic describes the Standard and Debug REPL modes. IPython モードについて詳しくは、「Using the IPython REPL」(IPython REPL の使用) をご覧ください。For details on IPython modes, see Using the IPython REPL.

Ctrl + Enter などのエディターとの対話を含む、例を使用した詳細なチュートリアルについては、「チュートリアル手順 3: 対話型 REPL ウィンドウを使用する」を参照してください。For a detailed walkthrough with examples, including the interactions with the editor such as Ctrl+Enter, see Tutorial Step 3: Using the interactive REPL window. ビデオでの概要については、「Python 対話型ウィンドウ」 (Microsoft Virtual Academy、2 分 22 秒) を参照してください。For a video introduction, see Python Interactive Window (Microsoft Virtual Academy, 2m22s).

対話型ウィンドウを開くOpening an interactive window

環境用の対話型ウィンドウを開くにはいくつかの方法があります。There are several ways to open the interactive window for an environment.

(第 1 の方法) [Python Environments (Python 環境)] ウィンドウに切り替え ([表示] > [その他のウィンドウ] > [Python Environments (Python 環境)]、または Ctrl + K、Ctrl + `)、[Open Interactive Window (対話型ウィンドウを開く)] コマンドまたは選んだ環境のボタンを選びます。First, switch to the Python Environments window (View > Other Windows > Python Environments or Ctrl-K, Ctrl-`) and select the Open Interactive Window command or button for a chosen environment.

Python 環境ウィンドウの対話型ウィンドウへのリンク

(第 2 の方法) [表示] > [その他のウィンドウ] メニューの下の方に、既定の環境の ** [Python Interactive ウィンドウ]** コマンドと、環境ウィンドウに切り替えるためのコマンドがあります。Second, near the bottom of the View > Other Windows menu, there's a ** Python Interactive Window** command for your default environment, as well as a command to switch to the environments window:

[表示] > [その他のウィンドウ] の対話型ウィンドウ メニュー項目

(第 3 の方法) プロジェクトのスタートアップ ファイルで対話型ウィンドウを開くことができます。または、スタンドアロン ファイルの場合は、[デバッグ] > [Execute [Project | File] in Python Interactive (Python Interactive で [プロジェクト | ファイル] を実行する)] メニュー コマンドを選びます (Shift + Alt + F5)。Third, you can open an interactive window on the startup file in your project, or for a stand-alone file, by selecting the Debug > Execute [Project | File] in Python Interactive menu command (Shift+Alt+F5):

[Execute Project in Python Interactive (Python Interactive でプロジェクトを実行する)] メニュー

(第 4 の方法) ファイルでコードを選び、後で説明する Interactive にコードを送信するコマンドを使います。Finally, you can select code in file and use the send code to interactive command described below.

対話型ウィンドウのオプションInteractive window options

[ツール] > [オプション] > [Python Tools] > [対話型ウィンドウ] を使って、対話型ウィンドウのさまざまな部分を制御できます (オプションを参照)。You can control various aspects of the interactive window through Tools > Options > Python Tools > Interactive Windows (see Options):

Python Interactive ウィンドウのオプション

対話型ウィンドウの使用Using the interactive window

対話型ウィンドウを開いた後は、>>> プロンプトで 1 行ずつコードの入力を開始できます。Once the interactive window is open, you can start entering code line-by-line at the >>> prompt. 対話型ウィンドウは、入力と同時に各行を実行します。これには、モジュールのインポートや、変数の定義などが含まれます。The interactive window executes each line as you enter it, which includes importing modules, defining variables, and so on:

Python Interactive ウィンドウ

例外は、上に示すように、for ステートメントがコロンで終わる場合など、完全なステートメントにするために追加のコード行が必要な場合です。The exception is when additional lines of code are needed to make a complete statement, such as when a for statement ends in a colon as shown above. このような場合、行プロンプトが ... に変わり、ブロックの追加行を入力する必要があることを示します (上の図の 4 番目と 5 番目の行を参照)。In these cases, the line prompt changes to ... indicating that you need to enter additional lines for the block, as shown on the fourth and fifth lines in the graphic above. 空白行で Enter キーを押すと、対話型ウィンドウはブロックを終了し、インタープリターでブロックを実行します。When you press Enter on a blank line, the interactive window closes the block and runs it in the interpreter.

ヒント

対話型ウィンドウは、囲むスコープに属しているステートメントを自動的にインデントすることにより、Python の通常のコマンドライン REPL エクスペリエンスを向上させます。The interactive window improves upon the usual Python command-line REPL experience by automatically indenting statements that belong to a surrounding scope. 対話型ウィンドウの履歴 (上方向キーで再呼び出しされます) は複数行の項目も提供しますが、コマンドライン REPL は単一行しか提供しません。Its history (recalled with the up arrow) also provides multiline items, whereas the command-line REPL provides only single lines.

また、対話型ウィンドウは複数のメタコマンドもサポートします。The interactive window also supports several meta-commands. すべてのメタコマンドは $ で始まり、「$help」と入力するとメタコマンドの一覧が表示され、「$help <command>」と入力すると特定のコマンドの使用方法の詳細が表示されます。All meta-commands start with $, and you can type $help to get a list of the meta-commands and $help <command> to get usage details for a specific command.

メタコマンドMeta-command 説明Description
$$ コメントを挿入します。セッションのコードにコメントを追加するのに役立ちます。Inserts a comment, which is helpful to comment code throughout your session.
$attach Visual Studio のデバッガーを REPL ウィンドウ プロセスにアタッチして、デバッグできるようにします。Attaches the Visual Studio debugger to the REPL window process to enable debugging.
$cls, $clear$cls, $clear エディター ウィンドウの内容を消去し、履歴と実行コンテキストはそのまま維持します。Clears the contents of the editor window, leaving history and execution context intact.
$help コマンドの一覧または特定のコマンドのヘルプを表示します。Display a list of commands, or help on a specific command.
$load ファイルからコマンドを読み込み、完了するまで実行します。Loads commands from file and executes until complete.
$mod 現在のスコープを指定されたモジュール名に切り替えます。Switches the current scope to the specified module name.
$reset 実行環境を初期状態にリセットしますが、履歴は保持します。Resets the execution environment to the initial state, but keeps history.
$wait 少なくとも指定されたミリ秒数だけ待機します。Waits for at least the specified number of milliseconds.

Visual Studio 拡張機能で IInteractiveWindowCommand を実装およびエクスポートすることで、コマンドを拡張することもできます ()。Commands are also extensible by Visual Studio extensions by implementing and exporting IInteractiveWindowCommand (example).

スコープの切り替えSwitching scopes

既定では、プロジェクトの対話型ウィンドウのスコープは、コマンド プロンプトから実行した場合のように、プロジェクトのスタートアップ ファイルです。By default, the interactive window for a project is scoped to the project's startup file as if you ran it from the command prompt. スタンドアロン ファイルの場合は、そのファイルがスコープになります。For a stand-alone file, it's scopes to that file. ただし、対話型ウィンドウの上部にあるドロップダウン メニューを使って、REPL セッション中にいつでもスコープを変更できます。At any time, however, drop-down menu along the top of the interactive window lets you change scope at any time during your REPL session:

対話型ウィンドウのスコープ

import importlib」と入力するなどしてモジュールをインポートすると、そのモジュール内の他のスコープに切り替えるためのオプションがドロップダウン リストに表示されます。Once you import a module, such as typing import importlib, options appear in the drop-down to switch into any scope in that module. 対話型ウィンドウのメッセージは新しいスコープも示すため、セッション中にどのようにして特定の状態になったかを追跡できます。A message in the interactive window also indicates the new scope, so you can track how you got to a certain state during your session.

スコープで「dir()」と入力すると、関数名、クラス、変数など、そのスコープで有効な識別子が表示されます。Entering dir() in a scope displays valid identifiers in that scope, including function names, classes, and variables. たとえば、import importlib に続けて dir() を使うと、次にように表示されます。For example, using import importlib followed by dir() shows the following:

importlib スコープ内の対話型ウィンドウ

<a name="sending-code-to-interactive"<a name="sending-code-to-interactive"

対話型コマンドにコードを送信するSend code to interactive command

対話型ウィンドウ内で直接作業するだけでなく、エディターで、コードを選び、右クリックして、[Interactive に送信] を選ぶか、Ctrl + Enter キーを押します。In addition to working within the interactive window directly, you can select code in the editor, right-click, and choose Send to Interactive or press Ctrl+Enter.

[Interactive に送信] メニュー コマンド

このコマンドは、開発しながらコードをテストするなど、反復的なまたは革新的なコードの開発に役立ちます。This command is useful for iterative or evolutionary code development, including testing your code as you develop it. たとえば、対話型ウィンドウにコードの一部を送信し、その出力を表示した後、上方向キーを押してコードをもう一度表示し、変更してから、Ctrl + Enter キーを押して簡単にテストすることができます For example, once you've sent a piece of code to the interactive window and seen its output, you can press the up arrow to show the code again, modify it, and test it quickly by pressing Ctrl+Enter. (入力の最後に Enter キーを押すと入力内容が実行されますが、入力の途中で Enter キーを押すと改行が挿入されます)。目的のコードができたら、簡単にプロジェクト ファイルにコピーして戻すことができます。(Pressing Enter at the end of input executes it, but pressing Enter in the middle of input inserts a newline.) Once you have the code you want, you can easily copy it back into your project file.

ヒント

既定では、Visual Studio は、対話型ウィンドウからコードをエディターに貼り付けるときに、>>> と ... REPL プロンプトを削除します。By default, Visual Studio removes >>> and ... REPL prompts when pasting code from the interactive window into the editor. この動作は、[ツール] > [オプション] > [テキスト エディター] > [Python] > [詳細設定] タブで [貼り付け時に REPL プロンプトを削除する] オプションを使用して変更できます。You can change this behavior on the Tools > Options > Text Editor > Python > Advanced tab using the Paste removes REPL prompts option. Options - Miscellaneous Options」(オプション ∸ その他のオプション) を参照してください。See Options - Miscellaneous options.

コード ファイルをスクラッチ パッドとして使用していると、小さなコードのブロックを一度に送信したい場合がよくあります。When using a code file as a scratchpad, you often have a small block of code you want to send all at once. コードを一緒にグループ化するには、#%% で始まるコメントを前のセルを終了するセルの先頭に追加して、コードをコード セルとしてマーク付けします。To group code together, mark the code as a code cell by adding a comment starting with #%% to the beginning of the cell, which ends the previous one. コード セルは折りたたむことも展開することもでき、コード セル内で Ctrl + Enter キーを使用することでセル全体を対話型ウィンドウに送信し、次のセルに移動できます。Code cells can be collapsed and expanded, and using Ctrl+Enter inside a code cell sends the entire cell to the interactive window and moves to the next one.

Visual Studio は # In[1]: のようなコメントで始まるコード セルも検出します。これは、Jupyter Notebook を Python ファイルとしてエクスポートするときに取得する形式です。Visual Studio also detects code cells starting with comments like # In[1]:, which is the format you get when exporting a Jupyter notebook as a Python file. この検出は、ノートブックを Python ファイルとしてダウンロードし、Visual Studio で開き、Ctrl + Enter キーを使用して各セルを実行することで、Azure Notebooks からノートブックを簡単に実行できるようにします。This detection makes it easy to run a notebook from Azure Notebooks by downloading as a Python file, opening in Visual Studio, and using Ctrl+Enter to run each cell.

対話型コード セル

IntelliSense の動作IntelliSense behavior

コード エディターの IntelliSense がソース コードの分析のみに基づくのとは異なり、対話型ウィンドウに含まれる IntelliSense はライブ オブジェクトに基づきます。The interactive window includes IntelliSense based on the live objects, unlike the code editor in which IntelliSense is based on source code analysis only. これらの提案は対話型ウィンドウではより正確です。動的に生成されるコードでは特にそうです。These suggestions are more correct in the interactive window, especially with dynamically generated code. 欠点としては、副作用のある関数 (ログ メッセージなど) は、開発エクスペリエンスに影響を与える可能性があります。The drawback is that functions with side-effects (such as logging messages) may impact your development experience.

それが問題になる場合は、オプションの「対話型ウィンドウ オプション」で説明されているように、[ツール] > [オプション] > [Python Tools] > [対話型ウィンドウ][入力候補モード] グループにある設定を変更します。If this behavior is a problem, change the settings under Tools > Options > Python Tools > Interactive Windows in the Completion Mode group, as described on Options - Interactive Windows options.