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


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

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

   python3.9

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

마이크로소프트 스토어에서 설치한 파이썬이 있는 윈도우 시스템에서는,
"python3.9" 명령을 사용할 수 있습니다. py.exe 구동기를 설치했으면,
"py" 명령을 사용할 수 있습니다. 파이썬을 구동하는 다른 방법은 보충 설
명: 환경 변수 설정하기를 참조하십시오.

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

인터프리터는 GNU Readline 라이브러리를 지원하는 시스템에서 줄 편집 기
능으로 대화형 편집, 히스토리 치환, 코드 완성 등을 제공합니다. 아마도
명령행 편집이 제공되는지 확인하는 가장 빠른 방법은 첫 프롬프트에서
"Control-P" 를 입력하는 것입니다. 삑 하는 소리가 난다면 명령행 편집이
지원되고 있습니다; 입력 키에 대한 소개는 부록 대화형 입력 편집 및 히스
토리 치환 을 보세요. 아무런 반응도 없거나 "^P" 가 출력된다면 명령행 편
집이 제공되지 않는 것입니다; 현재 줄에서 문자를 지우기 위해 백스페이스
를 사용할 수 있는 것이 전부입니다.

인터프리터는 어느 정도 유닉스 셸처럼 동작합니다: 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.9
   Python 3.9 (default, June 4 2019, 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 실행 파일과
    충돌하지 않도록 하기 위해섭니다.
