Python 인터프리터 사용하기
Python 인터프리터 사용하기
튜토리얼 2장에서는 Python 인터프리터를 어떻게 시작하는지, 그리고 명령줄에서 인자를 어떻게 넘기는지 살펴봐요. 인터프리터는 대화형 모드로도, 스크립트를 읽어 실행하는 방식으로도 동작할 수 있어요. 처음 Python을 설치하고 나면 어디서부터 시작해야 할지 막막한데, 바로 이 장이 그 첫걸음을 안내해 줍니다.
출처: Python 공식 문서
인터프리터 호출하기
Python 인터프리터는 보통 설치된 머신에서 /usr/local/bin/python3.14에 설치돼 있어요. 만약 /usr/local/bin이 Unix 셸의 검색 경로에 들어 있다면 셸에 다음과 같이 입력하는 것만으로도 실행할 수 있죠.
python3.14
인터프리터가 실제로 설치되는 디렉터리는 설치 옵션에 따라 달라져요. 다른 위치도 가능하니, 주변의 Python 고수나 시스템 관리자에게 확인해 보세요. (예를 들어 /usr/local/python도 자주 쓰이는 위치랍니다.)
Microsoft Store에서 Python을 설치한 Windows 머신에서는 python3.14 명령을 사용할 수 있어요. 만약 py.exe 런처가 설치돼 있다면 py 명령을 쓸 수 있고요. Python을 실행하는 다른 방법은 Python 설치 관리자 문서에서 확인할 수 있어요.
기본 프롬프트에서 파일 끝 문자(Unix에서는 Control-D, Windows에서는 Control-Z)를 입력하면 인터프리터가 종료 상태 0으로 빠져나와요. 그게 안 된다면 quit()을 입력해서 나가면 돼요.
인터프리터의 줄 편집 기능에는 대부분의 시스템에서 대화형 편집, 히스토리 치환, 코드 완성이 포함돼요. 명령줄 편집이 지원되는지 가장 빠르게 확인하는 방법은 Python 프롬프트에 단어를 입력한 뒤 왼쪽 화살표(또는 Control-B)를 눌러 보는 거예요. 커서가 움직이면 명령줄 편집이 되는 거죠. 키에 대한 소개는 부록 '대화형 입력 편집과 히스토리 치환'을 참고하면 돼요. 아무 일도 일어나지 않거나 ^[[D나 ^B 같은 시퀀스가 나타나면 명령줄 편집이 지원되지 않는 것이니, 백스페이스로만 현재 줄의 문자를 지울 수 있어요.
인터프리터는 Unix 셸과 비슷하게 동작해요. 표준 입력이 tty 장치에 연결된 상태로 호출되면 명령을 대화형으로 읽고 실행하고, 파일 이름 인자와 함께 호출되거나 파일이 표준 입력으로 들어오면 그 파일에서 스크립트를 읽어 실행하죠.
인터프리터를 시작하는 두 번째 방법은 python -c command [arg] ...예요. 이건 셸의 -c 옵션과 비슷하게 command의 문장(들)을 실행해요. Python 문장은 공백이나 셸에 특별한 의미를 가진 문자를 자주 포함하므로, 보통 command 전체를 따옴표로 감싸라고 권해요.
어떤 Python 모듈은 스크립트처럼 유용하게 쓰이기도 해요. python -m module [arg] ...처럼 호출하면 module의 소스 파일을 마치 명령줄에 전체 이름을 적은 것처럼 실행해요.
스크립트 파일을 실행한 다음 대화형 모드로 들어가는 게 유용할 때가 있어요. 이때는 스크립트 앞에 -i를 전달하면 돼요.
모든 명령줄 옵션은 '명령줄과 환경'에서 설명돼 있어요.
인자 전달하기
인터프리터가 스크립트 이름과 그 뒤의 추가 인자를 알게 되면, 그걸 문자열 리스트로 만들어 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 뒤에 오는 옵션들은 Python 인터프리터의 옵션 처리에 소비되지 않고, 명령이나 모듈이 처리하도록 sys.argv에 남겨져요.
대화형 모드
명령이 tty에서 읽히면 인터프리터가 대화형 모드에 있다고 말해요. 이 모드에서는 다음 명령을 기본 프롬프트, 보통 세 개의 큼지막한 부등호(>>>)로 물어보죠. 연속 줄에는 기본적으로 세 개의 점(...)인 보조 프롬프트를 사용해요. 인터프리터는 첫 프롬프트를 출력하기 전에 버전 번호와 저작권 고지를 알려주는 환영 메시지를 출력해요.
$ python3.14
Python 3.14 (default, April 4 2024, 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!
대화형 모드에 대해 더 알고 싶다면 '대화형 모드'를 참고하세요.
인터프리터와 그 환경
소스 코드 인코딩
기본적으로 Python 소스 파일은 UTF-8로 인코딩된 것으로 취급돼요. 그 인코딩에서는 세계 대부분 언어의 문자를 문자열 리터럴, 식별자, 주석에 동시에 쓸 수 있어요. 다만 표준 라이브러리는 식별자에 ASCII 문자만 사용하는데, 이건 모든 이식 가능한 코드가 따라야 하는 관례예요. 이 모든 문자를 제대로 표시하려면 에디터가 파일이 UTF-8임을 인식해야 하고, 파일 안의 모든 문자를 지원하는 글꼴을 사용해야 해요.
기본값이 아닌 다른 인코딩을 선언하려면 파일의 첫 번째 줄에 특별한 주석 줄을 추가해야 해요. 문법은 다음과 같아요.
# -*- coding: encoding -*-
여기서 encoding은 Python이 지원하는 유효한 코덱 중 하나예요.
예를 들어 Windows-1252 인코딩을 사용하겠다고 선언하려면 소스 코드 파일의 첫 줄을 다음과 같이 쓰면 돼요.
# -*- coding: cp1252 -*-
첫 줄 규칙의 예외는 소스 코드가 UNIX '셰방'(shebang) 줄로 시작하는 경우예요. 이 경우 인코딩 선언을 파일의 두 번째 줄에 추가해야 해요. 예를 들면 다음과 같죠.
#!/usr/bin/env python3
# -*- coding: cp1252 -*-