- Python 인터프리터는 Python 코드를 실행하는 프로그램
- Python 소스 코드를 읽고 실행 가능한 명령어로 변환하는 역할
- Python은 컴파일러 언어가 아닌 인터프리터 언어로, 프로그램이 실행되는 동안 한 줄씩 코드를 해석하고 실행
- 이 과정에서 Python 인터프리터는 다음과 같은 주요 단계들을 수행합니다.
Python 인터프리터의 주요 구성 요소와 동작 방식
-
파싱 (Parsing)
-
바이트코드 생성 (Bytecode Generation)
- 구문 트리가 생성된 후, 이를 바탕으로 바이트코드(Bytecode)로 변환합니다.
- 바이트코드는 Python 가상 머신(Python Virtual Machine, PVM)에서 실행 가능한 저수준의 명령어 집합
- 바이트코드는 일반적으로
.pyc
파일로 저장되며, 이는 실행 속도를 높이기 위해 사용됩니다.
-
실행 (Execution)
- 바이트코드는 PVM에 의해 실행됩니다.
- PVM은 바이트코드를 한 줄씩 읽고, 해당 명령어를 실행합니다.
- 이 단계에서 변수 할당, 함수 호출, 연산 수행 등이 이루어집니다.
Python 인터프리터의 동작 과정
-
소스 코드 입력
- 사용자가 작성한 Python 소스 코드가 인터프리터에 입력됩니다.
-
렉싱 (Lexing)
- 소스 코드가 토큰(Token)으로 분해됩니다. 토큰은 언어의 최소 단위로, 키워드, 식별자, 연산자, 리터럴 등이 포함됩니다.
-
파싱 (Parsing)
- 토큰들이 구문 트리로 변환됩니다. 이 과정에서 문법 오류가 발생하면, 인터프리터는 오류 메시지를 출력하고 실행을 중단합니다.
-
바이트코드 생성 (Bytecode Generation)
- 구문 트리가 바이트코드로 변환
- 바이트코드는 PVM에서 실행 가능한 명령어 집합
-
실행 (Execution)
- PVM이 바이트코드를 실행
- 이 과정에서 메모리 관리, 변수 할당, 함수 호출 등이 수행
Python 인터프리터의 예시
다른 Python 인터프리터로는 Jython, IronPython, PyPy 등이 있습니다:
인터프리터와 컴파일러의 차이
-
인터프리터:
- 한 줄씩 코드를 해석하고 실행
- 실행 도중에 코드의 오류를 발견할 수 있음
- Python, Ruby, JavaScript 등이 인터프리터 언어의 예
-
컴파일러:
- 전체 코드를 한 번에 해석하여 실행 가능한 바이너리 파일로 변환
- 변환된 바이너리 파일을 실행할 때는 인터프리터보다 빠릅니다.
- C, C++, Java 등이 컴파일러 언어의 예입니다.