# IDLE

소스 코드: Lib/idlelib/

IDLE은 파이썬의 통합 개발 및 학습 환경입니다.

IDLE에는 다음과 같은 기능이 있습니다:

- coded in 100% pure Python, using the `tkinter` GUI toolkit

- 크로스 플랫폼: 윈도우, 유닉스 및 macOS에서 거의 같게 작동합니다

- 코드 입력, 출력 및 에러 메시지를 채색하는 파이썬 셸 창 (대화식 인터프리터)

- 다중 실행 취소, 파이썬 색상 지정, 스마트 들여쓰기, 호출 팁, 자동 완성 및 기타 기능이 있는 다중 창 텍스트 편집기

- 모든 창 내에서 검색, 편집기 창 내에서 교체 및 여러 파일을 통한 검색 (grep)

- 지속적인 중단점(breakpoints), 스테핑(stepping) 및 전역과 지역 이름 공간 보기가 있는 디버거

- 구성, 브라우저 및 기타 대화 상자

## 메뉴

IDLE에는 두 가지 메인 창 유형이 있습니다, 셸 창과 편집기 창. 여러 개의 편집기 창을 동시에 가질 수 있습니다. 윈도우와 리눅스에서는, 각각 자신의 최상위 메뉴가 있습니다. 아래에 설명된 각 메뉴는 어떤 창 유형과 관련되는지를 나타냅니다.

가령 Edit => Find in Files 에서 사용되는 것과 같은 출력 창은 편집기 창의 하위 유형입니다. 현재 같은 최상위 메뉴가 있지만, 기본 제목과 문맥 메뉴가 다릅니다.

macOS에는, 하나의 응용 프로그램 메뉴가 있습니다. 현재 선택된 창에 따라 동적으로 변경됩니다. IDLE 메뉴가 있으며, 아래 설명된 일부 항목은 Apple 지침에 따라 이동됩니다.

### File 메뉴 (셸과 편집기)

New File

  새 파일 편집 창을 만듭니다.

Open…

  열기 대화 상자로 기존 파일을 엽니다.

Open Module…

  기존 모듈을 엽니다 (sys.path를 검색합니다).

Recent Files

  최근 파일의 목록을 엽니다. 하나를 클릭하여 엽니다.

Module Browser

  현재 편집기 파일의 함수, 클래스 및 메서드를 트리 구조로 표시합니다. 셸에서, 모듈을 먼저 여십시오.

Path Browser

  sys.path 디렉터리, 모듈, 함수, 클래스 및 메서드를 트리 구조로 표시합니다.

Save

  현재 창을 (있다면) 연관된 파일에 저장합니다. 열거나 마지막으로 저장한 이후에 변경된 창에는 창 제목 앞뒤에 * 가 있습니다. 연결된 파일이 없으면, 대신 Save As 를 수행합니다.

Save As…

  다른 이름으로 저장(Save As) 대화 상자를 사용하여 현재 창을 저장합니다. 저장된 파일이 창의 새 연관된 파일이 됩니다. (파일 관리자가 확장자를 숨기도록 설정되어 있으면, 파일명 상자에서 현재 확장자가 생략됩니다. 새 파일명에 ‘.’이 없으면, 파이썬과 텍스트 파일에 ‘.py’ 와 ‘.txt’ 가 추가됩니다. 맥 OS Aqua 에서는 예외인데, 모든 파일에 대해 ‘.py’ 가 추가됩니다.)

Save Copy As…

  연관된 파일을 변경하지 않고 현재 창을 다른 파일에 저장합니다. (파일명 확장자에 대해서는 위의 Save As 참고 사항을 참조하십시오.)

Print Window

  현재 창을 기본 프린터로 인쇄합니다.

Close Window

  현재 창을 닫습니다 (저장하지 않은 편집기면, 저장하도록 요청합니다; 저장하지 않은 셸이면, 실행을 중단하도록 요청합니다. 셸 창에서 `exit()`나 `close()`를 호출하면 셸을 닫습니다. 만약 이 것이 유일한 창이면, IDLE 도 종료합니다.).

Exit IDLE

  모든 창을 닫고 IDLE을 종료합니다 (저장되지 않은 편집 창을 저장하도록 요청합니다).

### Edit 메뉴 (셸과 편집기)

Undo

  현재 창에 대한 마지막 변경을 되돌립니다. 최대 1000개의 변경을 되돌릴 수 있습니다.

Redo

  마지막으로 되돌린 변경을 현재 창에 다시 실행합니다.

Select All

  현재 창의 전체 내용을 선택합니다.

Cut

  선택 사항을 시스템 전체 클립 보드에 복사합니다; 그런 다음 선택을 삭제합니다.

Copy

  선택 사항을 시스템 전체 클립 보드에 복사합니다.

Paste

  시스템 전체 클립 보드의 내용을 현재 창에 삽입합니다.

클립 보드 기능은 문맥 메뉴에서도 사용할 수 있습니다.

Find…

  많은 옵션이 제공되는 검색 대화 상자를 엽니다

Find Again

  마지막 검색이 있으면 반복합니다.

Find Selection

  현재 선택된 문자열이 있으면 검색합니다.

Find in Files…

  파일 검색 대화 상자를 엽니다. 새로운 출력 창에 결과를 넣습니다.

Replace…

  검색과 치환 대화 상자를 엽니다.

Go to Line

  요청한 줄의 시작 부분으로 커서를 이동하고 해당 줄을 표시합니다. 파일 끝을 지나는 요청은 파일의 끝으로 갑니다. 모든 선택을 취소하고 줄과 열 상태를 갱신합니다.

Show Completions

  기존 이름을 선택할 수 있는 스크롤 할 수 있는 목록을 엽니다. 아래의 편집 및 탐색 섹션에서 완성을 참조하십시오.

Expand Word

  같은 창에서 전체 단어와 일치하도록 입력한 접두사를 확장합니다; 다른 확장을 얻으려면 반복하십시오.

Show Call Tip

  함수에 대해 닫히지 않은 괄호 뒤에서, 함수 매개 변수 힌트가 있는 작은 창을 엽니다. 아래의 편집과 탐색 섹션에서 콜팁을 참조하십시오.

Show Surrounding Parens

  주변 괄호를 강조 표시합니다.

### Format 메뉴 (편집기 창 전용)

Format Paragraph

  주석 블록이나 여러 줄 문자열의 빈 줄로 구분되는 현재 단락이나 문자열에서 선택한 줄을 다시 포맷합니다. 단락의 모든 줄은 N 열 미만으로 포맷되며, 여기서 N은 기본적으로 72입니다.

Indent Region

  선택한 줄을 들여쓰기 너비(기본값은 4개의 스페이스)만큼 오른쪽으로 이동합니다.

Dedent Region

  선택한 줄을 들여쓰기 너비(기본값은 4개의 스페이스)만큼 왼쪽으로 이동합니다.

Comment Out Region

  선택한 줄 앞에 ## 을 삽입합니다.

Uncomment Region

  선택한 줄에서 선행 # 이나 ## 을 제거합니다.

Tabify Region

  연속된 선행 스페이스를 탭으로 바꿉니다. (참고: 4개의 스페이스 블록을 사용하여 파이썬 코드를 들여 쓰는 것이 좋습니다.)

Untabify Region

  모든 탭을 올바른 수의 스페이스로 바꿉니다.

Toggle Tabs

  스페이스와 탭 들여쓰기 간을 전환하는 대화 상자를 엽니다.

New Indent Width

  들여쓰기 너비를 변경하는 대화 상자를 엽니다. 파이썬 커뮤니티에서 받아들여지는 기본값은 4개의 스페이스입니다.

Strip Trailing Chitespace

  여러 줄 문자열 내의 줄을 포함하여, 각 줄에 str.rstrip을 적용하여 줄의 마지막 비 공백 문자 뒤의 후행 스페이스와 기타 공백 문자를 제거합니다. 셸 창을 제외하고, 파일 끝에서 추가 줄 바꿈을 제거합니다.

### Run 메뉴 (편집기 창 전용)

Run Module

  Check Module을 수행합니다. 에러가 없으면, 셸을 다시 시작하여 환경을 정리한 다음, 모듈을 실행합니다. 출력은 셸 창에 표시됩니다. 출력에는 `print`나 `write`를 사용해야 함에 유의하십시오. 실행이 완료되면, 셸은 포커스를 유지하고 프롬프트를 표시합니다. 이 시점에서, 실행 결과를 대화식으로 탐색할 수 있습니다. 이것은 명령 줄에서 `python -i file`로 파일을 실행하는 것과 유사합니다.

Run… Customized

  Run Module과 같지만, 사용자 정의 설정으로 모듈을 실행합니다. 명령 줄 인자(Command Line Arguments)는 명령 줄에 전달된 것처럼 `sys.argv`를 확장합니다. 다시 시작하지 않고 모듈을 셸에서 실행할 수 있습니다.

Check Module

  편집기 창에 현재 열려 있는 모듈의 문법을 검사합니다. 모듈이 저장되지 않았으면 IDLE은 설정 대화 상자의 General 탭에서 선택한 대로 사용자에게 저장을 요구하거나 자동 저장합니다. 문법 에러가 있으면, 대략적인 위치가 편집기 창에 표시됩니다.

Python Shell

  파이썬 셸 창을 열거나 깨웁니다.

### Shell 메뉴 (셸 창 전용)

View Last Restart

  셸 창을 마지막 셸 재시작으로 스크롤 합니다.

Restart Shell

  셸을 다시 시작하여 환경을 정리하고 디스플레이와 예외 처리를 재설정합니다.

Previous History

  히스토리에서 현재 항목과 일치하는 이전 명령을 순환합니다.

Next History

  히스토리에서 현재 항목과 일치하는 다음 명령을 순환합니다.

Interrupt Execution

  실행 중인 프로그램을 중지합니다.

### Debug 메뉴 (셸 창 전용)

Go to File/Line

  커서가 놓인 현재 줄과 줄 위에서 파일명과 줄 번호는 찾습니다. 발견되면, (파일이 아직 열려 있지 않으면 파일을 열고) 줄을 보여줍니다. 이를 사용하여 예외 트레이스백에서 참조된 소스 줄과 Find in Files에서 찾은 줄을 볼 수 있습니다. 셸 창과 출력 창의 문맥 메뉴에서도 사용할 수 있습니다.

Debugger (toggle)

  활성화되면, 셸에 입력되거나 편집기에서 실행된 코드가 디버거에서 실행됩니다. 편집기에서, 문맥 메뉴를 사용하여 중단점을 설정할 수 있습니다. 이 기능은 아직 불완전하고 다소 실험적입니다.

Stack Viewer

  locals와 globals에 대한 액세스와 함께, 트리 위젯에 마지막 예외의 스택 트레이스백을 표시합니다.

Auto-open Stack Viewer

  처리되지 않은 예외에서 스택 뷰어를 자동으로 여는 것을 전환합니다.

### Options 메뉴 (셸과 편집기)

Configure IDLE

  구성 대화 상자를 열고 다음과 같은 것들에 대한 설정을 변경합니다: 글꼴, 들여쓰기, 키 바인딩, 텍스트 색상 테마, 시작 창과 크기, 추가 도움말 소스 및 확장. macOS의 경우, 응용 프로그램 메뉴에서 Preferences를 선택하여 구성 대화 상자를 여십시오. 자세한 내용은, 도움말과 환경 설정에서 환경 설정을 참조하십시오.

대부분의 구성 옵션은 모든 창이나 모든 미래 창에 적용됩니다. 아래의 옵션 항목은 활성 창에만 적용됩니다.

Show/Hide Code Context (편집기 창 전용)

  편집 창의 상단에 창의 상단 위로 스크롤 된 코드의 블록 컨텍스트를 표시하는 팬을 엽니다. 아래의 편집과 탐색 섹션에서 코드 컨텍스트를 참조하십시오.

Show/Hide Line Numbers (편집기 창 전용)

  편집 창 왼쪽에 텍스트의 줄 번호를 표시하는 열을 엽니다. 기본 설정은 꺼져 있으며, 환경 설정에서 변경될 수 있습니다 (환경 설정을 참조하십시오).

Zoom/Restore Height

  창을 보통 크기와 최대 높이 사이에서 전환합니다. IDLE 구성 대화 상자의 General 탭에서 변경하지 않는 한 초기 크기의 기본값은 40줄 80문자입니다. 화면의 최대 높이는 화면에서 처음 확대할 때 창을 일시적으로 최대화하여 결정됩니다. 화면 설정을 변경하면 저장된 높이가 무효가 될 수 있습니다. 이 전환은 창이 최대화되었을 때 적용되지 않습니다.

### Window 메뉴 (셸과 편집기)

열려있는 모든 창의 이름을 나열합니다; 하나를 선택하여 전경으로 가져옵니다 (필요한 경우 아이콘화를 해제합니다).

### Help 메뉴 (셸과 편집기)

About IDLE

  버전, 저작권, 라이선스, 크레딧 등을 표시합니다.

IDLE Help

  메뉴 옵션, 기본 편집과 탐색 및 기타 팁을 자세히 설명하는 이 IDLE 설명서를 표시합니다.

Python Docs

  설치되었으면, 로컬 파이썬 문서에 액세스하거나, 웹 브라우저를 시작하여 최신 파이썬 설명서를 보여주는 docs.python.org 를 엽니다.

Turtle Demo

  예제 파이썬 코드와 터틀 그래픽을 제공하는 turtledemo 모듈을 실행합니다.

IDLE 구성 대화 상자의 General 탭으로 여기에 도움말 소스를 추가할 수 있습니다. Help 메뉴 선택에 대한 자세한 내용은 아래의 도움말 소스 하위 섹션을 참조하십시오.

### Context 메뉴

윈도우에서 마우스 오른쪽 버튼을 클릭하여 문맥 메뉴를 엽니다 (macOS에서는 Control-클릭). 문맥 메뉴에는 Edit 메뉴에도 있는 표준 클립 보드 기능이 있습니다.

Cut

  선택 사항을 시스템 전체 클립 보드에 복사합니다; 그런 다음 선택을 삭제합니다.

Copy

  선택 사항을 시스템 전체 클립 보드에 복사합니다.

Paste

  시스템 전체 클립 보드의 내용을 현재 창에 삽입합니다.

편집기 창에는 중단점 기능도 있습니다. 중단점이 설정된 줄은 특별히 표시됩니다. 중단점은 디버거에서 실행할 때만 영향을 미칩니다. 파일의 중단점은 사용자의 `.idlerc` 디렉터리에 저장됩니다.

Set Breakpoint

  현재 줄에 중단점을 설정합니다.

Clear Breakpoint

  해당 줄에서 중단점을 지웁니다.

셸과 출력 창에서는 다음과 같은 것도 있습니다.

Go to file/line

  Debug 메뉴와 같습니다.

셸 창에는 아래 파이썬 셸 창 하위 섹션에 설명된 출력 압착 기능도 있습니다.

Squeeze

  커서가 출력 줄 위에 있으면, 위 코드와 아래 프롬프트 사이의 모든 출력을 ‘Squeezed text’ 레이블로 압착합니다.

## 편집과 탐색

### 편집기 창

설정과 IDLE 시작 방법에 따라, IDLE이 시작될 때 편집기 창을 열 수 있습니다. 그런 다음, File 메뉴를 사용하십시오. 주어진 파일에 대해 열린 편집기 창이 하나만 있을 수 있습니다.

제목 표시 줄에는 파일 이름, 전체 경로 및 창을 실행하는 파이썬과 IDLE 버전이 포함됩니다. 상태 표시 줄에는 줄 번호(‘Ln’)와 열 번호(‘Col’)가 있습니다. 줄 번호는 1로 시작합니다; 열 번호는 0으로 시작합니다.

IDLE은 알려진 .py* 확장자를 가진 파일에 파이썬 코드가 포함되어 있고 다른 파일은 그렇지 않다고 가정합니다. Run 메뉴를 사용하여 파이썬 코드를 실행하십시오.

### 키 바인딩

In this section, ‘C’ refers to the `Control` key on Windows and Unix and the `Command` key on macOS.

- `Backspace` deletes to the left; `Del` deletes to the right

- ``C`-`Backspace`` delete word left; ``C`-`Del`` delete word to the right

- Arrow keys and ``Page` `Up``/``Page` `Down`` to move around

- ``C`-`LeftArrow`` and ``C`-`RightArrow`` moves by words

- `Home`/`End` go to begin/end of line

- ``C`-`Home``/``C`-`End`` go to begin/end of file

- Some useful Emacs bindings are inherited from Tcl/Tk:

  > - ``C`-`a`` beginning of line

  > - ``C`-`e`` end of line

  > - ``C`-`k`` kill line (but doesn’t put it in clipboard)

  > - ``C`-`l`` center window around the insertion point

  > - ``C`-`b`` go backward one character without deleting (usually you can also use the cursor key for this)

  > - ``C`-`f`` go forward one character without deleting (usually you can also use the cursor key for this)

  > - ``C`-`p`` go up one line (usually you can also use the cursor key for this)

  > - ``C`-`d`` delete next character

(복사하는 ``C`-`c``와 붙여넣기 하는 ``C`-`v``와 같은) 표준 키 바인딩이 작동 할 수 있습니다. 키 바인딩은 IDLE 구성 대화 상자에서 선택됩니다.

### 자동 들여쓰기

블록을 여는 문장 다음에, 다음 줄은 4개의 스페이스로 들여쓰기 됩니다 (파이썬 셸 창에서는 한 탭씩). 특정 키워드(break, return 등)가 다음에 다음 줄이 내어 쓰기 됩니다. 앞선 들여쓰기에서, `Backspace`는 최대 4개의 스페이스가 있으면 삭제합니다. `Tab`은 스페이스를 삽입합니다 (파이썬 셸 창에서는 하나의 탭), 개수는 들여쓰기 너비에 따라 다릅니다. 현재 Tcl/Tk 제한으로 인해 탭은 4개의 스페이스로 제한됩니다.

Format 메뉴의 Indent/Dedent Region 명령도 참조하십시오.

### 검색과 치환

Any selection becomes a search target. However, only selections within a line work because searches are only performed within lines with the terminal newline removed. If `[x] Regular expresion` is checked, the target is interpreted according to the Python re module.

### 완성

요청되고 사용할 수 있을 때, 모듈 이름, 클래스나 함수의 어트리뷰트 또는 파일명에 대한 완성(completions)이 제공됩니다. 각 요청 방법은 기존 이름을 가진 완성 상자가 표시됩니다. (예외는 아래의 탭 완성을 참조하십시오.) 모든 상자는, 문자를 입력하고 삭제해서; `Up`, `Down`, `PageUp`, `PageDown`, `Home` 및 `End` 키를 쳐서; 상자 안에서 한 번의 클릭으로 완성 중인 이름과 상자에서 강조 표시된 항목을 변경합니다. `Escape`, `Enter` 및 이중 `Tab` 키나 상자 외부를 클릭하여 상자를 닫으십시오. 상자 안에서 더블 클릭하면 선택하고 닫습니다.

상자를 여는 한 가지 방법은 키 문자를 입력하고 미리 정의된 간격만큼 기다리는 것입니다. 기본값은 2초입니다; 설정 대화 상자에서 사용자 정의하십시오. (자동 팝업을 방지하려면, 지연을 100000000과 같은 큰 밀리초로 설정하십시오.) 임포트한 모듈 이름이나 클래스나 함수 어트리뷰트의 경우, ‘.’를 입력하십시오. 루트 디렉터리의 파일명은 여는 인용 부호 바로 뒤에 `os.sep`이나 `os.altsep`을 입력하십시오. (윈도우에서는, 먼저 드라이브를 지정할 수 있습니다.) 디렉터리 이름과 구분자를 입력하여 서브 디렉터리로 이동하십시오.

기다리는 대신, 또는 상자를 닫은 후, Edit 메뉴에서 Show Completions를 사용하여 즉시 완성 상자를 여십시오. 기본 단축키는 ``C`-`space``입니다. 상자를 열기 전에 원하는 이름의 접두사를 입력하면, 첫 번째 일치나 근거리 불일치가 표시됩니다. 결과는 상자가 표시된 후 접두사를 입력하는 것과 같습니다. 따옴표 뒤에서의 Show Completions는 루트 디렉터리 대신 현재 디렉터리에서 파일명을 완성합니다.

접두사 다음에 `Tab`을 누르면 일반적으로 Show Completions와 같은 효과가 있습니다. (접두사가 없으면 들여쓰기합니다.) 그러나, 접두사와 일치하는 항목이 하나뿐이면, 상자를 열지 않고 해당 일치가 편집기 텍스트에 즉시 추가됩니다.

문자열 밖에서 선행 ‘.’ 없이 접두어 뒤에서 ‘Show Completions’를 실행하거나 `Tab`을 누르면 키워드, 내장 이름 및 사용 가능한 모듈 수준 이름이 포함된 상자를 엽니다.

(셸과 달리) 편집기에서 코드를 편집할 때는, 셸을 다시 시작하지 않고 코드를 실행해서 사용 가능한 모듈 수준 이름을 늘리십시오. 파일 맨 위에 임포트를 추가한 후에 특히 유용합니다. 이것은 또한 가능한 어트리뷰트 완성을 늘립니다.

완성 상자는 ‘_’로 시작하거나, 모듈의 경우 ‘__all__’에 포함되지 않은 이름을 처음에는 제외합니다. 숨겨진 이름은 상자를 열기 전이나 후에 ‘.’ 뒤에 ‘_’를 입력하여 액세스 할 수 있습니다.

### 콜팁

액세스할 수 있는 함수 이름 다음에 `(`를 입력하면 콜팁이 자동으로 표시됩니다. 함수 이름 표현식에는 점과 서브스크립트가 포함될 수 있습니다. 콜팁은 클릭하거나, 커서가 인자 영역 밖으로 이동하거나, `)`를 입력할 때까지 남아 있습니다. 커서가 정의의 인자 부분에 있을 때마다, 콜팁을 표시하려면 메뉴에서 Edit와 “Show Call Tip”을 선택하거나 바로 가기를 입력하십시오.

콜팁은 함수 서명과 독스트링의 첫 번째 빈 줄이나 다섯 번째 비어 있지 않은 줄에 이르는 줄로 구성됩니다. (일부 내장 함수에는 액세스할 수 있는 서명이 없습니다.) 서명의 ‘/’나 ‘*’는 앞서거나 뒤따르는 인자가 위치나 이름(키워드) 전용으로 전달됨을 가리킵니다. 세부 사항은 변경될 수 있습니다.

셸에서, 액세스할 수 있는 함수는 Idle 스스로 임포트 한 모듈을 포함하여, 사용자 프로세스로 임포트 한 모듈과 마지막 재시작 이후에 어떤 정의가 실행되었는지에 따라 다릅니다.

예를 들어, 셸을 다시 시작하고 `itertools.count(`를 입력하십시오. Idle이 자신의 목적으로 itertools를 사용자 프로세스로 임포트 하기 때문에 콜팁이 표시됩니다. (이것은 변경될 수 있습니다.) `turtle.write(`를 입력하면 아무것도 나타나지 않습니다. Idle은 직접 turtle을 임포트 하지 않습니다. 메뉴 항목과 바로 가기도 아무것도 하지 않습니다. `import turtle`을 입력하십시오. 그다음부터, `turtle.write(`가 콜팁을 표시합니다.

편집기에서, import 문은 파일을 실행할 때까지 효과가 없습니다. import 문을 작성한 후, 함수 정의를 추가한 후 또는 기존 파일을 연 후 파일을 실행하고 싶을 것입니다.

### 코드 컨텍스트

파이썬 코드가 포함된 편집기 창 내에서, 창의 상단에 팬을 표시하거나 숨기기 위해 코드 컨텍스트를 토글 할 수 있습니다. 표시될 때, 이 분할 창은 `class`, `def` 또는 `if` 키워드로 시작하는 것과 같이 블록 코드를 여는 줄들을 고정합니다, 그렇지 않다면 뷰에서 스크롤 되어 빠져나갈 줄들입니다. 팬의 크기는 모든 현재 컨텍스트 수준을 표시하기 위해 필요에 따라 확장과 축소되며, IDLE 구성 대화 상자에 정의된 최대 줄 수가지 입니다 (기본값은 15). 현재 컨텍스트 줄이 없고 기능이 켜지면, 빈 줄 하나가 표시됩니다. 컨텍스트 팬에서 줄을 클릭하면 해당 줄을 편집기 맨 위로 이동합니다.

컨텍스트 팬의 텍스트와 배경색은 IDLE 구성 대화 상자의 Highlights 탭에서 구성할 수 있습니다.

### 셸 창

IDLE의 셸에서, 문장을 입력, 편집하고 완성된 문장을 다시 불러올 수 있습니다. (대부분의 콘솔과 터미널에서는 한 번에 하나의 물리적인 줄만 작업할 수 있습니다).

Submit a single-line statement for execution by hitting `Return` with the cursor anywhere on the line. If a line is extended with Backslash (`\`), the cursor must be on the last physical line. Submit a multi-line compound statement by entering a blank line after the statement.

셸에 코드를 붙여넣을 때, 위에서 지정한 대로, `Return`을 누를 때까지 컴파일되지도 실행되지도 않습니다. 붙여넣은 코드를 먼저 편집할 수 있습니다. 여러 문장을 셸에 붙여넣으면, 여러 문장이 마치 하나인 것처럼 컴파일되어 결과는 `SyntaxError`가 됩니다.

Lines containing `RESTART` mean that the user execution process has been re-started. This occurs when the user execution process has crashed, when one requests a restart on the Shell menu, or when one runs code in an editor window.

The editing features described in previous subsections work when entering code interactively. IDLE’s Shell window also responds to the following keys.

- ``C`-`c`` interrupts executing command

- ``C`-`d`` sends end-of-file; closes window if typed at a `>>>` prompt

- ``Alt`-`/`` (Expand word) is also useful to reduce typing

  Command history

  - ``Alt`-`p`` retrieves previous command matching what you have typed. On macOS use ``C`-`p``.

  - ``Alt`-`n`` retrieves next. On macOS use ``C`-`n``.

  - `Return` while the cursor is on any previous command retrieves that command

### 텍스트 색상

Idle은 기본적으로 흰색 위의 검은색 텍스트지만, 특수한 의미로 텍스트를 채색합니다. 셸의 경우, 셸 출력, 셸 에러, 사용자 출력 및 사용자 에러입니다. 파이썬 코드의 경우, 셸 프롬프트나 편집기에서, 키워드, 내장 클래스와 함수 이름, `class`와 `def` 뒤에 오는 이름, 문자열 및 주석입니다. 모든 텍스트 창에서, 커서 (있다면), 찾은 텍스트 (가능하다면) 및 선택한 텍스트입니다.

IDLE also highlights the soft keywords `match`, `case`, and `_` in pattern-matching statements. However, this highlighting is not perfect and will be incorrect in some rare cases, including some `_`-s in `case` patterns.

텍스트 채색은 백그라운드에서 수행되므로, 채색되지 않은 텍스트가 때때로 표시됩니다. 색 구성표를 변경하려면, IDLE 구성 대화 상자 Highlighting 탭을 사용하십시오. 편집기의 디버거 중단점 표시와 팝업과 대화 상자의 텍스트는 사용자가 구성할 수 없습니다.

## 시작과 코드 실행

`-s` 옵션으로 시작할 때, IDLE은 환경 변수 `IDLESTARTUP`이나 `PYTHONSTARTUP`가 참조하는 파일을 실행합니다. IDLE은 먼저 `IDLESTARTUP`을 확인합니다; `IDLESTARTUP`이 있으면 참조된 파일이 실행됩니다. `IDLESTARTUP`이 없으면, IDLE은 `PYTHONSTARTUP`을 확인합니다. 이러한 환경 변수가 참조하는 파일은 IDLE 셸에서 자주 사용되는 함수를 저장하거나 공통 모듈을 임포트 하기 위해 import 문을 실행하기에 편리한 장소입니다.

또한, `Tk`도 시작 파일이 있으면 로드합니다. Tk 파일은 무조건 로드됨에 유의하십시오. 이 추가 파일은 `.Idle.py`이며 사용자의 홈 디렉터리에서 찾습니다. 이 파일의 문장은 Tk 이름 공간에서 실행되므로, 이 파일은 IDLE의 파이썬 셸에서 사용할 함수를 임포트 하는 데 유용하지 않습니다.

### 명령 줄 사용법

    idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ...

    -c command  run command in the shell window
    -d          enable debugger and open shell window
    -e          open editor window
    -h          print help message with legal combinations and exit
    -i          open shell window
    -r file     run file in shell window
    -s          run $IDLESTARTUP or $PYTHONSTARTUP first, in shell window
    -t title    set title of shell window
    -           run stdin in shell (- must be last option before args)

If there are arguments:

- If `-`, `-c`, or `r` is used, all arguments are placed in `sys.argv[1:...]` and `sys.argv[0]` is set to `''`, `'-c'`, or `'-r'`. No editor window is opened, even if that is the default set in the Options dialog.

- Otherwise, arguments are files opened for editing and `sys.argv` reflects the arguments passed to IDLE itself.

### 시작 실패

IDLE은 소켓을 사용하여 IDLE GUI 프로세스와 사용자 코드 실행 프로세스 간에 통신합니다. 셸을 시작하거나 다시 시작할 때마다 연결을 만들어야 합니다. (후자는 ‘RESTART’라고 표시된 구분 선으로 표시됩니다). 사용자 프로세스가 GUI 프로세스에 연결하지 못하면, 보통 사용자에게 알리는 ‘cannot connect’ 메시지가 담긴 `Tk` 에러 상자가 표시됩니다. 그런 다음 종료합니다.

유닉스 시스템의 한가지 특정한 연결 실패는 시스템 네트워크 설정의 어딘가에서 잘못 구성된 마스쿼레이딩 규칙으로 인해 발생합니다. IDLE이 터미널에서 시작될 때, `** Invalid host:`로 시작하는 메시지를 보게 됩니다. 유효한 값은 `127.0.0.1 (idlelib.rpc.LOCALHOST)`입니다. 한 터미널 창에서 `tcpconnect -irv 127.0.0.1 6543`로, 다른 창에서 `tcplisten <same args>`로 진단할 수 있습니다.

일반적인 실패 원인은 random.py와 tkinter.py처럼, 표준 라이브러리 모듈과 이름이 같은 사용자가 작성한 파일입니다. 이러한 파일이 실행하려는 파일과 같은 디렉터리에 있을 때, IDLE은 표준 라이브러리 파일을 임포트 할 수 없습니다. 현재 수선법은 사용자 파일의 이름을 바꾸는 것입니다.

앞엣것보다 덜 흔하지만, 바이러스 백신이나 방화벽 프로그램이 연결을 중지할 수 있습니다. 프로그램이 연결을 허용하도록 지시할 수 없으면, IDLE이 작동하도록 프로그램을 꺼야 합니다. 외부 포트에 데이터가 노출되지 않기 때문에 이 내부 연결을 허용하는 것은 안전합니다. 비슷한 문제는 연결을 차단하는 네트워크 구성 에러입니다.

파이썬 설치 문제로 인해 IDLE이 중지되는 경우가 있습니다: 여러 버전이 충돌하거나 단일 설치에 관리자 액세스가 필요할 수 있습니다. 충돌을 제거하거나, 관리자 권한으로 실행할 수 없거나 그러고 싶지 않으면 파이썬을 완전히 제거하고 다시 시작하기가 가장 쉽습니다.

좀비 pythonw.exe 프로세스가 문제일 수 있습니다. 윈도우에서는, 작업 관리자를 사용하여 확인하고 있다면 중지하십시오. 때때로 프로그램 충돌이나 키보드 인터럽트(control-C)에 의해 시작된 재시작이 연결에 실패할 수 있습니다. 에러 상자를 닫거나 Shell 메뉴에서 Restart Shell을 사용하면 일시적인 문제를 해결할 수 있습니다.

IDLE이 처음 시작되면, `~/.idlerc/`에서 사용자 구성 파일을 읽으려고 시도합니다 (~는 사용자의 홈 디렉터리입니다). 문제가 있으면, 에러 메시지가 표시되어야 합니다. 임의의 디스크 결함은 예외로 할 때, 파일을 절대 직접 편집하지 않으면 이를 방지할 수 있습니다. 대신, Options의 구성 대화 상자를 사용하십시오. 일단 사용자 구성 파일에 에러가 발생하면, 이를 삭제하고 설정 대화 상자에서 다시 시작하는 것이 가장 좋습니다.

IDLE이 메시지 없이 종료되고, 콘솔에서 시작되지 않았으면, 콘솔이나 터미널에서 시작하고 (`python -m idlelib`) 에러 메시지가 나타나는지 확인하십시오.

Tcl/tk가 `8.6.11`(`About IDLE`을 보십시오)보다 오래된 유닉스 기반 시스템에서 특정 글꼴의 특정 문자는 터미널에 보내는 메시지와 함께 tk 실패를 일으킬 수 있습니다. 이러한 문자가 있는 파일을 편집하기 위해 IDLE을 시작하거나 나중에 이러한 문자를 입력할 때 발생할 수 있습니다. tcl/tk를 업그레이드할 수 없으면, 더 잘 작동하는 글꼴을 사용하도록 IDLE을 다시 구성하십시오.

### 사용자 코드 실행하기

드문 경우를 제외하고, IDLE을 사용하여 파이썬 코드를 실행한 결과는 텍스트 모드 시스템 콘솔이나 터미널 창에서 파이썬을 사용하여 기본 방법으로 같은 코드를 실행하는 것과 같아야 합니다. 그러나, 다른 인터페이스와 연산은 때때로 시각적인 결과에 영향을 줍니다. 예를 들어, `sys.modules`는 더 많은 항목으로 시작하고, `threading.active_count()`는 1 대신 2를 반환합니다.

기본적으로, IDLE은 셸과 편집기를 실행하는 사용자 인터페이스 프로세스가 아닌 별도의 OS 프로세스에서 사용자 코드를 실행합니다. 실행 프로세스에서, `sys.stdin`, `sys.stdout` 및 `sys.stderr`를 셸 창에서 입력을 받고 셸 창으로 출력을 보내는 객체로 바꿉니다. `sys.__stdin__`, `sys.__stdout__` 및 `sys.__stderr__`에 저장된 원래 값은 건드리지 않지만, `None`일 수 있습니다.

한 프로세스에서 다른 프로세스의 텍스트 위젯으로 인쇄 출력을 보내는 것은 같은 프로세스에서 시스템 터미널로 인쇄하는 것보다 느립니다. 이것은 여러 인자를 인쇄할 때 특히 그렇습니다. 각 인자의 문자열, 각 구분자, 줄 바꿈은 개별적으로 전송되기 때문입니다. 개발할 때는 일반적으로 문제가 되지 않지만, IDLE로 더 빨리 인쇄하려면 표시하려는 모든 항목을 포맷하고 결합한 다음 단일 문자열을 인쇄하십시오. 포맷 문자열과 `str.join()` 모두 필드와 줄을 결합하는 데 도움이 될 수 있습니다.

IDLE의 표준 스트림 대체는 (사용자 코드 직접 하거나 multiprocessing과 같은 모듈로) 실행 프로세스에서 만들어진 서브 프로세스에 의해 상속되지 않습니다. 이러한 서브 프로세스가 sys.stdin에서 `input`을 사용하거나 sys.stdout이나 sys.stderr로 `print`나 `write`를 사용하면, 명령 줄 창에서 IDLE을 시작해야 합니다. (윈도우에서는, `pythonw`나 `pyw` 대신 `python`이나 `py`를 사용하세요.) 그러면 이차 서브 프로세스가 입력과 출력을 위해 해당 창에 연결될 겁니다.

`importlib.reload(sys)`와 같은 사용자 코드에 의해 `sys`가 재설정되면, IDLE의 변경 사항이 손실되고 키보드로부터의 입력과 화면으로의 출력이 올바르게 동작하지 않게 됩니다.

셸에 포커스가 있으면, 키보드와 화면을 제어합니다. 이것은 일반적으로 투명하지만, 키보드와 화면에 직접 액세스하는 함수는 작동하지 않습니다. 여기에는 키를 눌렀는지를 판단하는 시스템 특정 함수가 포함됩니다.

실행 프로세스에서 실행 중인 IDLE 코드는 그렇지 않다면 없을 프레임을 호출 스택에 추가합니다. IDLE은 `sys.getrecursionlimit`와 `sys.setrecursionlimit`를 래핑하여 추가 스택 프레임의 영향을 줄입니다.

사용자 코드가 직접 또는 sys.exit를 호출하여 SystemExit를 발생시키면, IDLE은 종료하는 대신 셸 프롬프트로 돌아갑니다.

### 셸의 사용자 출력

프로그램이 텍스트를 출력할 때, 결과는 해당 출력 장치에 의해 결정됩니다. IDLE이 사용자 코드를 실행할 때, `sys.stdout`과 `sys.stderr`이 IDLE 셸의 표시 영역에 연결됩니다. 그 기능 중 일부는 하부 Tk Text 위젯에서 상속됩니다. 다른 것은 프로그래밍한 추가 사항입니다. (중요하다면) 셸은 상용 실행보다는 개발용으로 설계되었습니다.

예를 들어, 셸은 절대로 출력을 버리지 않습니다. 셸에 무제한 출력을 보내는 프로그램은 결국 메모리를 채워서, 메모리 에러를 일으킵니다. 반대로, 일부 시스템 텍스트 창은 마지막 n 줄의 출력만 유지합니다. 예를 들어, 윈도우 콘솔은 사용자가 설정하면 최대 9999줄을 유지할 수 있으며, 기본값은 300입니다.

Tk Text 위젯, 따라서 IDLE의 셸은 유니코드의 BMP (Basic Multilingual Plane) 부분 집합에서 문자(코드 포인트)를 표시합니다. 어떤 문자가 적절한 글리프로 표시될지와 어떤 문자가 대체 상자로 표시될지는 운영 체제와 설치된 글꼴에 따라 다릅니다. 탭 문자는 뒤따르는 문자가 다음 탭 정지 뒤에서 시작되도록 합니다. (탭 정지는 8 ‘문자’마다 나타납니다). 줄 바꿈 문자는 뒤따르는 텍스트가 새 줄에 나타나게 합니다. 다른 제어 문자는 운영 체제와 글꼴에 따라 무시되거나 스페이스, 상자 또는 그 밖의 것으로 표시됩니다. (화살표 키를 사용하여 이러한 출력에서 텍스트 커서를 움직이면 예상치 못한 간격 동작이 나타날 수 있습니다.)

    >>> s = 'a\tb\a<\x02><\r>\bc\nd'  # Enter 22 chars.
    >>> len(s)
    14
    >>> s  # Display repr(s)
    'a\tb\x07<\x02><\r>\x08c\nd'
    >>> print(s, end='')  # Display s as is.
    # Result varies by OS and font.  Try it.

`repr` 함수는 표현식 값의 대화 형 에코에 사용됩니다. 입력 문자열의 변경된 버전을 반환하는데, 제어 코드, 일부 BMP 코드 포인트 및 모든 BMP 이외의 코드 포인트가 이스케이프 코드로 대체됩니다. 위에서 예시했듯이, 어떻게 표시되는지와 관계없이 문자열의 문자를 식별할 수 있도록 합니다.

정상과 에러 출력은 일반적으로 코드 입력 및 서로와 분리되어 별도의 줄에 유지됩니다. 그들은 각각 다른 강조 색상을 얻습니다.

SyntaxError 트레이스백의 경우, 에러가 감지된 곳의 일반적인 ‘^’ 표시는 에러 강조로 텍스트를 색칠하는 것으로 대체됩니다. 파일에서 실행한 코드가 다른 예외를 발생시킬 때, 트레이스백 줄을 마우스 오른쪽 단추로 클릭하여 IDLE 편집기의 해당 줄로 이동할 수 있습니다. 필요하면 파일이 열립니다.

셸에는 출력 라인을 ‘Squeezed text’ 레이블로 압착하는 특수 기능이 있습니다. 이것은 N 줄을 넘어가는 출력에 대해 자동으로 수행됩니다 (기본적으로 N = 50). Settings 대화 상자의 General 페이지의 PyShell 섹션에서 N을 변경할 수 있습니다. 출력을 마우스 오른쪽 버튼으로 클릭하면 더 적은 줄의 출력을 압착할 수 있습니다. 이것은 스크롤 속도를 늦출 수 있을 정도로 긴 줄에 유용할 수 있습니다.

압착된 출력은 레이블을 더블 클릭하여 제자리에서 펼쳐집니다. 레이블을 마우스 오른쪽 버튼으로 클릭하여 클립 보드나 별도의 보기 창으로 보낼 수도 있습니다.

### tkinter 응용 프로그램 개발하기

IDLE은 tkinter 프로그램 개발을 용이하게 하기 위해 표준 파이썬과 의도적으로 다릅니다. 표준 파이썬에서 `import tkinter as tk; root = tk.Tk()`를 입력하면 아무것도 나타나지 않습니다. IDLE에 동일하게 입력하면 tk 창이 나타납니다. 표준 파이썬에서는, 창을 보려면 `root.update()`도 입력해야 합니다. IDLE은 초당 약 20회, 대략 50밀리초마다, 백그라운드에서 동등한 일을 합니다. 그런 다음 `b = tk.Button(root, text='button'); b.pack()`을 입력하십시오. 마찬가지로, 표준 파이썬에서는 `root.update()`를 입력할 때까지 아무것도 시각적으로 변경되지 않습니다.

대부분의 tkinter 프로그램은 `root.mainloop()`를 실행하는데, 일반적으로 tk 앱이 파괴될 때까지 반환되지 않습니다. 프로그램이 `python -i`이나 IDLE 편집기에서 실행되면, `mainloop()`가 반환할 때까지 (상호 작용할 것이 남아있지 않을 때까지) `>>>` 셸 프롬프트가 나타나지 않습니다.

IDLE 편집기에서 tkinter 프로그램을 실행할 때, mainloop 호출을 주석 처리할 수 있습니다. 그러면 즉시 셸 프롬프트를 얻고 라이브 응용 프로그램과 상호 작용할 수 있습니다. 표준 파이썬에서 실행할 때 mainloop 호출을 다시 활성화해야 한다는 것을 기억해야 합니다.

### 서브 프로세스 없이 실행하기

기본적으로, IDLE은 내부 루프 백 인터페이스를 사용하는 소켓을 통해 별도의 서브 프로세스에서 사용자 코드를 실행합니다. 이 연결은 외부에서 볼 수 없으며 인터넷으로 데이터를 보내거나 받지 않습니다. 방화벽 소프트웨어가 어쨌든 불평하면, 무시할 수 있습니다.

소켓 연결 시도가 실패하면, Idle은 여러분에게 알립니다. 이러한 장애는 때때로 일시적이지만, 지속한다면, 문제는 방화벽이 연결을 차단하거나 특정 시스템의 구성이 잘못되었을 수 있습니다. 문제가 해결될 때까지, -n 명령 줄 스위치를 사용하여 Idle을 실행할 수 있습니다.

IDLE이 -n 명령 줄 스위치로 시작되면 단일 프로세스에서 실행되며 RPC 파이썬 실행 서버를 실행하는 서브 프로세스를 만들지 않습니다. 파이썬이 플랫폼에서 서브 프로세스나 RPC 소켓 인터페이스를 만들 수 없을 때 유용할 수 있습니다. 그러나, 이 모드에서 사용자 코드는 IDLE 자체와 분리되지 않습니다. 또한, Run/Run Module (F5) 가 선택될 때 환경이 다시 시작되지 않습니다. 코드가 수정되면, 변경 사항을 적용하려면 영향을 받는 모듈을 reload()하고 특정 항목을 다시 임포트 해야 합니다 (예를 들어 from foo import baz). 이러한 이유로, 가능하다면 기본 서브 프로세스로 IDLE을 실행하는 것이 좋습니다.

버전 3.4부터 폐지.

## 도움말과 환경 설정

### 도움말 소스

Help 메뉴 항목 “IDLE Help”는 라이브러리 레퍼런스의 IDLE 장의 포맷된 html 버전을 표시합니다. 읽기 전용 tkinter 텍스트 창에 표시되는 결과는 웹 브라우저에서 보는 것과 비슷합니다. 마우스 휠, 스크롤 바 또는 위/아래 화살표 키를 누른 상태로 텍스트를 탐색하십시오. 또는 TOC(목차) 단추를 클릭하고 열린 상자에서 섹션 머리글을 선택하십시오.

Help 메뉴 항목 “Python Docs”는 `docs.python.org/x.y`에 있는 자습서를 포함하여 광범위한 도움말 소스를 엽니다, 여기서 ‘x.y’는 현재 실행 중인 파이썬 버전입니다. 시스템에 문서의 오프라인 사본이 있으면 (설치 옵션일 수 있습니다), 대신 열립니다.

IDLE 구성 대화 상자의 General 탭을 사용하여 언제든지 도움말 메뉴에서 선택한 URL을 추가하거나 제거할 수 있습니다.

### 환경 설정

글꼴 설정, 강조 표시, 키 및 일반 설정은 Option 메뉴의 IDLE 구성을 통해 변경할 수 있습니다. 기본이 아닌 사용자 설정은 사용자 홈 디렉터리의 `.idlerc` 디렉터리에 저장됩니다. 잘못된 사용자 구성 파일로 인한 문제점은 `.idlerc`에서 하나 이상의 파일을 편집하거나 삭제하여 해결됩니다.

Font 탭에서, 여러 언어로 된 여러 문자의 서체와 크기 효과에 대한 텍스트 샘플을 참조하십시오. 개인적으로 관심 있는 다른 문자를 추가하려면 샘플을 편집하십시오. 샘플을 사용하여 고정 폭 글꼴을 선택하십시오. 셸이나 편집기에서 특정 문자에 문제가 있으면, 샘플 상단에 해당 문자를 추가하고 먼저 크기를 변경한 다음 글꼴을 변경해보십시오.

Highlights와 Keys 탭에서, 내장이나 사용자 정의 색상 테마와 키 집합을 선택하십시오. 이전 IDLE로 최신 내장 색상 테마나 키 집합을 사용하려면, 새 사용자 정의 색상 테마나 키 집합으로 저장하십시오, 그러면 이전 IDLE에서 쉽게 액세스 할 수 있습니다.

### macOS의 IDLE

시스템 환경설정: Dock에서, “문서를 열 때 탭 사용”을 “항상”으로 설정할 수 있습니다. 이 설정은 IDLE에서 사용하는 tk/tkinter GUI 프레임 워크와 호환되지 않으며, 몇 가지 IDLE 기능을 훼손합니다.

### 확장

IDLE에는 확장 기능이 포함되어 있습니다. 설정 대화 상자의 Extensions 탭에서 확장에 대한 설정을 변경할 수 있습니다. 자세한 정보는 idlelib 디렉터리에 있는 config-extensions.def의 시작 부분을 참조하십시오. 현재 기본 확장은 zzdummy 뿐이며, 테스트에도 사용되는 예입니다.

## idlelib

소스 코드: Lib/idlelib

The Lib/idlelib package implements the IDLE application. See the rest of this page for how to use IDLE.

The files in idlelib are described in idlelib/README.txt. Access it either in idlelib or click Help => About IDLE on the IDLE menu. This file also maps IDLE menu items to the code that implements the item. Except for files listed under ‘Startup’, the idlelib code is ‘private’ in sense that feature changes can be backported (see PEP 434).