부록
부록 (Appendix)
튜토리얼의 마무리인 이 부록에서는 파이썬을 실제로 다룰 때 알아 두면 좋은 세부 사항들을 정리해 두었어요. 대화형(interactive) 모드의 동작 방식, 스크립트를 직접 실행 가능하게 만드는 방법, 시작 시 자동으로 실행되는 파일 설정까지. 정독하기보다는 필요한 순간에 펼쳐 보는 안내서라고 생각하면 편합니다.
대화형 모드 (Interactive Mode)
대화형 REPL에는 두 가지 변형이 있습니다. 고전적인 기본 인터프리터는 최소한의 줄 제어(line control) 기능으로 모든 플랫폼에서 지원돼요.
파이썬 3.13부터는 기본적으로 새 대화형 셸이 사용됩니다. 이 셸은 색상, 여러 줄 편집, 히스토리 탐색, 붙여넣기 모드(paste mode)를 지원해요. 색상을 끄려면 Controlling color를 참고하세요. 기능 키 몇 개가 추가 기능을 제공합니다.
- F1 — 대화형 도움말 브라우저
pydoc을 엽니다. - F2 — 출력과
>>>및...프롬프트 없이 명령줄 히스토리를 탐색하게 해 줍니다. - F3 — 더 큰 코드 블록을 붙여넣기 쉽게 해 주는 "붙여넣기 모드"로 들어갑니다. 일반 프롬프트로 돌아가려면 F3을 다시 누르세요.
새 대화형 셸을 사용할 때는 exit 또는 quit을 입력해 셸을 종료합니다. 이 명령들 뒤에 호출 괄호를 붙일 필요는 없어요.
새 대화형 셸이 마음에 들지 않는다면 PYTHON_BASIC_REPL 환경 변수로 비활성화할 수 있습니다.
오류 처리 (Error Handling)
오류가 발생하면 인터프리터는 오류 메시지와 스택 추적(stack trace)을 출력합니다. 대화형 모드에서는 그런 다음 기본 프롬프트로 돌아가요. 입력이 파일에서 온 경우에는 스택 추적을 출력한 뒤 0이 아닌 종료 상태로 종료됩니다. (try 문 안의 except 절이 처리한 예외는 이런 맥락에서는 오류가 아닙니다.) 어떤 오류는 무조건 치명적이라 0이 아닌 종료 상태로 종료되기도 하는데, 내부 불일치와 메모리 부족의 일부 경우가 그렇습니다. 모든 오류 메시지는 표준 오류 스트림(standard error)에 기록되고, 실행된 명령의 정상 출력은 표준 출력(standard output)에 기록됩니다.
기본 또는 보조 프롬프트에서 인터럽트 문자(보통 Control-C 또는 Delete)를 입력하면 입력이 취소되고 기본 프롬프트로 돌아갑니다. [1] 명령이 실행되는 동안 인터럽트를 입력하면 KeyboardInterrupt 예외가 일어나는데, 이는 try 문으로 처리할 수 있어요.
실행 가능한 파이썬 스크립트 (Executable Python Scripts)
BSD 계열의 Unix 시스템에서는 파이썬 스크립트를 셸 스크립트처럼 직접 실행 가능하게 만들 수 있습니다. 스크립트의 시작 부분에 아래 줄을 넣고(인터프리터가 사용자의 PATH에 있다고 가정) 파일에 실행 권한을 주면 되죠.
#!/usr/bin/env python3
#!는 파일의 처음 두 글자여야 해요. 일부 플랫폼에서는 이 첫 줄이 Windows('\r\n') 줄 끝이 아니라 Unix 스타일 줄 끝('\n')으로 끝나야 합니다. 참고로 '#'(해시, 혹은 파운드) 문자는 파이썬에서 주석을 시작하는 데 사용된다는 점도 기억해 두세요.
스크립트에는 chmod 명령으로 실행 권한(permission)을 줄 수 있어요.
$ chmod +x myscript.py
Windows 시스템에는 "실행 권한(executable mode)"이라는 개념이 없습니다. 파이썬 설치 프로그램이 .py 파일을 python.exe와 자동으로 연결해 두기 때문에, 파이썬 파일을 더블클릭하면 스크립트로 실행됩니다. 확장자는 .pyw일 수도 있는데, 이 경우에는 평소 나타나는 콘솔 창이 표시되지 않습니다.
대화형 시작 파일 (The Interactive Startup File)
파이썬을 대화형으로 사용할 때, 인터프리터가 시작될 때마다 몇 가지 표준 명령이 실행되면 편리한 경우가 자주 있습니다. PYTHONSTARTUP라는 환경 변수에 시작 명령을 담은 파일의 이름을 지정하면 이렇게 할 수 있어요. Unix 셸의 .profile 기능과 비슷합니다.
이 파일은 대화형 세션에서만 읽힙니다. 파이썬이 스크립트에서 명령을 읽을 때나 /dev/tty가 명령의 명시적 소스로 주어질 때(그 외에는 대화형 세션처럼 동작함)는 읽히지 않아요. 이 파일은 대화형 명령이 실행되는 것과 같은 네임스페이스에서 실행되므로, 파일이 정의하거나 임포트한 객체들을 대화형 세션에서 한정자(qualification) 없이 사용할 수 있습니다. 이 파일에서 프롬프트 sys.ps1과 sys.ps2를 바꿀 수도 있어요.
현재 디렉터리에서 추가 시작 파일을 읽고 싶다면 전역 시작 파일에 if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()) 같은 코드로 프로그래밍할 수 있습니다. 시작 파일을 스크립트에서 사용하고 싶다면 스크립트 안에서 명시적으로 처리해야 해요.
import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
with open(filename) as fobj:
startup_file = fobj.read()
exec(startup_file)
커스터마이징 모듈 (The Customization Modules)
파이썬은 자신을 꾸밀 수 있게 해 주는 훅(hook) 두 개를 제공합니다. 바로 sitecustomize와 usercustomize입니다. 이것이 어떻게 동작하는지 보려면 먼저 사용자의 site-packages 디렉터리 위치를 알아야 해요. 파이썬을 시작하고 아래 코드를 실행해 보세요.
>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.x/site-packages'
이제 그 디렉터리에 usercustomize.py라는 파일을 만들고 원하는 내용을 넣으면 됩니다. 이 파일은 자동 임포트를 비활성화하는 -s 옵션으로 시작하지 않는 한, 파이썬의 모든 호출에 영향을 줍니다.
sitecustomize도 같은 방식으로 동작하지만, 보통 컴퓨터의 관리자가 전역 site-packages 디렉터리에 만들며 usercustomize보다 먼저 임포트됩니다. 자세한 내용은 site 모듈 문서를 참고하세요.