# 2. 파이썬 인터프리터 사용하기

## 2.1. 인터프리터 실행하기

파이썬 인터프리터는 보통 `/usr/local/bin/python3.7` 에 설치됩니다; 유닉스 셸의 검색 경로에 `/usr/local/bin` 를 넣으면 명령:

    python3.7

을 셸에 입력해서 실행할 수 있습니다. 1 인터프리터가 위치하는 디렉터리의 선택은 설치 옵션이기 때문에, 다른 장소도 가능합니다; 주변의 파이썬 전문가나 시스템 관리자에게 확인할 필요가 있습니다. (예를 들어, `/usr/local/python` 도 널리 사용되는 위치입니다.)

On Windows machines where you have installed Python from the Microsoft Store, the `python3.7` command will be available. If you have the py.exe launcher installed, you can use the `py` command. See Excursus: Setting environment variables for other ways to launch Python.

기본 프롬프트에서 EOF(end-of-file) 문자(유닉스에서는 `Control-D`, 윈도우에서는 `Control-Z`)를 입력하면 인터프리터가 종료하고, 종료 상태 코드는 0 이 됩니다. 이 방법이 통하지 않는다면 `quit()` 명령을 입력해서 인터프리터를 종료시킬 수 있습니다.

The interpreter’s line-editing features include interactive editing, history substitution and code completion on systems that support the GNU Readline library. Perhaps the quickest check to see whether command line editing is supported is typing `Control-P` to the first Python prompt you get. If it beeps, you have command line editing; see Appendix 대화형 입력 편집 및 히스토리 치환 for an introduction to the keys. If nothing appears to happen, or if `^P` is echoed, command line editing isn’t available; you’ll only be able to use backspace to remove characters from the current line.

인터프리터는 어느 정도 유닉스 셸처럼 동작합니다: tty 장치에 표준 입력이 연결된 상태로 실행되면, 대화형으로 명령을 읽고 실행합니다; 파일명을 인자로 주거나 파일을 표준입력으로 연결한 상태로 실행되면 스크립트를 읽고 실행합니다.

인터프리터를 실행하는 두 번째 방법은 `python -c command [arg] ...` 인데, command 에 있는 문장들을 실행합니다. 셸의 `-c` 옵션에 해당합니다. 파이썬 문장은 종종 셸에서 특별한 의미가 있는 공백이나 다른 문자들을 포함하기 때문에, command 전체를 작은따옴표로 감싸주는 것이 좋습니다.

몇몇 파이썬 모듈들은 스크립트로도 쓸모가 있습니다. `python -m module [arg] ...` 로 실행할 수 있는데, 마치 module 모듈 소스 파일의 경로명을 명령행에 입력한 것처럼 실행되게 됩니다.

스크립트 파일이 사용될 때, 때로 스크립트를 실행한 후에 대화형 모드로 들어가는 것이 편리할 때가 있습니다. 스크립트 앞에 `-i` 를 전달하면 됩니다.

모든 명령행 옵션은 명령 줄과 환경 에서 찾을 수 있습니다.

### 2.1.1. 인자 전달

스크립트 이름과 추가의 인자들이 인터프리터로 전달될 때, 문자열의 목록으로 변환된 후 `sys` 모듈의 `argv` 변수에 저장됩니다. `import sys` 를 사용해서 이 목록에 접근할 수 있습니다. 목록의 길이는 최소한 1이고, 스크립트도 추가의 인자도 없는 경우로, `sys.argv[0]` 은 빈 문자열입니다. 스크립트 이름을 `'-'` (표준 입력을 뜻한다) 로 주면 `sys.argv[0]` 는 `'-'` 가 됩니다. `-c` command 가 사용되면 `sys.argv[0]` 는 `'-c'` 로 설정됩니다. `-m` module 이 사용되면 `sys.argv[0]` 는 모듈의 절대 경로명이 됩니다. `-c` command 나 `-m` module 뒤에 오는 옵션들은 파이썬 인터프리터가 소모하지 않고 명령이나 모듈이 처리하도록 `sys.argv` 로 전달됩니다.

### 2.1.2. 대화형 모드

명령을 tty 에서 읽을 때, 인터프리터가 대화형 모드 로 동작한다고 말합니다. 이 모드에서는 기본 프롬프트 를 표시해서 다음 명령을 요청하는데, 보통 세 개의 …보다 크다 기호입니다 (`>>>`); 한 줄로 끝나지 않고 이어지는 줄의 입력을 요청할 때는 보조 프롬프트가 사용되는데, 기본적으로 세 개의 점입니다 (`...`). 인터프리터는 첫 번째 프롬프트를 인쇄하기 전에 버전 번호와 저작권 공지를 포함하는 환영 메시지를 출력합니다.

    $ python3.7
    Python 3.7 (default, Sep 16 2015, 09:25:04)
    [GCC 4.8.2] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>

이어지는 줄은 여러 줄로 구성된 구조물을 입력할 때 필요합니다. 예를 들자면, 이런 식의 `if` 문이 가능합니다:

    >>> the_world_is_flat = True
    >>> if the_world_is_flat:
    ...     print("Be careful not to fall off!")
    ...
    Be careful not to fall off!

대화형 모드에 대해 더 알고 싶다면, 대화형 모드 를 보세요.

## 2.2. 인터프리터와 환경

### 2.2.1. 소스 코드 인코딩

기본적으로, 파이썬 소스 파일들은 UTF-8으로 인코드 된 것으로 취급됩니다. 이 인코딩에서는 대부분 언어에서 사용되는 문자들을 문자열 상수, 식별자, 주석 등에서 함께 사용할 수 있습니다. (하지만 표준 라이브러리는 오직 ASCII 문자만 식별자로 사용하고 있는데, 범용 코드에서는 이 관례를 따르는 것이 좋습니다.) 이 문자들을 모두 올바로 표시하기 위해서는 편집기가 파일이 UTF-8임을 인식해야 하고, 이 파일에 포함된 모든 문자를 지원할 수 있는 폰트를 사용해야 합니다.

인코딩을 기본값 외의 것으로 선언하려면, 파일의 첫 줄에 특별한 형태의 주석 문을 추가해야 합니다. 문법은 이렇습니다:

    # -*- coding: encoding -*-

encoding 은 파이썬이 지원하는 코덱 (`codecs`) 중 하나여야 합니다.

예를 들어, Windows-1252 인코딩을 사용하도록 선언하려면, 소스 코드 파일의 첫 줄은 이렇게 되어야 합니다:

    # -*- coding: cp1252 -*-

첫 줄 규칙의 한가지 예외는 소스 코드가 유닉스 “셔뱅 (shebang)” 줄 로 시작하는 경우입니다. 이 경우에, 인코딩 선언은 두 번째 줄에 들어갑니다. 예를 들어:

    #!/usr/bin/env python3
    # -*- coding: cp1252 -*-

각주

1

  유닉스에서, 파이썬 3.x 인터프리터는 보통 `python` 이라는 이름의 실행 파일로 설치되지 않는데, 동시에 설치되는 파이썬 2.x 실행 파일과 충돌하지 않도록 하기 위해섭니다.