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


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

The Python interpreter is usually installed as
"/usr/local/bin/python3.12" on those machines where it is available;
putting "/usr/local/bin" in your Unix shell's search path makes it
possible to start it by typing the command:

   python3.12

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

On Windows machines where you have installed Python from the Microsoft
Store, the "python3.12" command will be available. If you have the
py.exe launcher installed, you can use the "py" command. See 보충 설명
: 환경 변수 설정하기 for other ways to launch Python.

기본 프롬프트에서 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.12
   Python 3.12 (default, April 4 2022, 09:25:04)
   [GCC 10.2.0] 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 실행 파일과
    충돌하지 않도록 하기 위해섭니다.
