Python 대화형 창 사용Working with the Python Interactive Window

Visual Studio는 각 Python 환경에 대화형 읽기-평가-인쇄 루프(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 대화형 창

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
Pylab가 없는 IPythonIPython 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 모드에 대한 자세한 내용은 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.

첫째, Python 환경 창(보기 > 다른 창 > Python 환경 또는 Ctrl+K, Ctrl+`)으로 전환하고 선택한 환경에서 대화형 창 열기 명령 또는 단추를 선택합니다.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 환경 창의 대화형 창 링크

둘째, 보기 > 다른 창 메뉴의 아래쪽에는 기본 환경에 대한 Python 대화형 창 명령뿐만 아니라 환경 창으로 전환하는 명령도 있습니다.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:

보기 > 다른 창의 대화형 창 메뉴 항목

셋째, 디버그 > Python 대화형 창에서 [프로젝트 | 파일] 실행 메뉴 명령(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):

Python 대화형 창에서 프로젝트 실행 메뉴

마지막으로, 파일의 코드를 선택하고 아래에 설명된 대화형 명령으로 코드 보내기를 사용할 수 있습니다.Finally, you can select code in file and use the send code to interactive command described below.

대화형 창 옵션Interactive window options

도구 > 옵션 > Python 도구 > 대화형 창을 통해 대화형 창의 다양한 측면을 제어할 수 있습니다(옵션 참조).You can control various aspects of the interactive window through Tools > Options > Python Tools > Interactive Windows (see Options):

Python 대화형 창 옵션

대화형 창 사용Using the interactive window

대화형 창이 열리면 >>> 프롬프트에서 코드를 한 줄씩 입력하기 시작할 수 있습니다.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 대화형 창

단, 위와 같이 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. 이 경우 위의 그림에서 네 번째 및 다섯 번째 줄에 표시된 것처럼 줄 프롬프트가 ...로 바뀌는데, 블록에 추가 줄을 입력해야 한다는 의미입니다.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.

대화형 창은 주변 범위에 속하는 문을 자동으로 들여쓰기하여 일반적인 명령줄 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 REPL 창 프로세스에 Visual Studio 디버거를 첨부하여 디버깅을 활성화합니다.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.

IInteractiveWindowCommand를 구현하고 내보내 Visual Studio 확장에서 명령을 확장할 수도 있습니다(예제).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. 옵션 - 기타 옵션을 참조하세요.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 Notebook에서 노트북을 쉽게 실행할 수 있습니다.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.

이 동작이 문제가 될 경우 옵션 - 대화형 Windows 옵션에 설명된 대로 도구 > 옵션 > Python 도구 > 대화형 창 아래의 완료 모드 그룹에서 설정을 변경합니다.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.