[Python] 파이썬 인터프리터(Interperter) 쉽게 이해하기

2025. 4. 17. 18:34·공부/⚡Python

1. 인터프리터(Interperter)

 - Interperter : "통역사"라는 의미를 가지고 있음.

 - 인터프리터는 한 줄씩 바로바로 읽고 통역을 해서 실행을 해준다는 의미를 가지고 있음.

 - 쉽게말해, 프로그램이 실행이 되면 실시간으로 한 줄씩 해석해서 실행을 한다는 말임.

 - 상상이 안갈테니, 바로 이해하기 쉽게 실행 과정으로 알려주겠음.

 


2. 파이썬 프로그램 실행 과정

(1) 소스코드 작성

 - .py 확장자를 가지는 소스코드를 의미함.

 

(2) 소스코드 실행

 - 내부적인 명령어 python test.py -> test.py 파이썬 코드 실행

 

(3) 파이썬 인터프리터 실행

 - 파이썬 인터프리터안에는 컴파일러와 인터프리터 2개가 내장이 되어있음.

 

(4) 컴파일러 실행 - 바이트코드 변환

 - 컴파일 단계에선 모든 소스코드를 읽어 구문 분석, 코드 변환(바이트코드) 를 수행한다.

 - 소스코드 -> 바이트코드(.pyc)로 변환

 - 이때 만들어지는, 바이트코드에는 인터프리터가 한 줄씩 해석하기 좋게 바이트코드를 만들어 놓는다.

 

(5) 인터프리터 실행 - 바이트코드를 운영체제가 읽을 수 있는 기계어로 변환

 - 컴파일이 된 바이트코드를 실행하는 역할을 하며, 기계어로 변환을 해준다.

 - 인터프리터로써, 한 줄씩 해석하며 기계어로 변환해서 운영체제로 넘겨주면, 운영체제가 코드를 실행함.

 - 운영체제는 메모리에 변수나, 객체 등의 공간을 할당함.

 - 사실상 바이트코드에는 논리적으로 이미 코드가 한줄씩 읽도록 편하게 정리가 되어있음.

 - 즉, 한 줄씩 실행되는 게 아니라, 코드의 논리적인 흐름을 바탕으로 순차적으로 처리되는 중간 코드가 바이트 코드인 셈이다.

 - 논리적으로 실행 가능한 짧은 단위로 잘라 놓았는데, 그것이 한 줄로 표현이 된 것이다.

 - 이런식으로 바이트코드 논리적 단위 -> 인터프리터 기계어 변환 -> 운영체제 실행 ( 반복을 함 )

 

3. 파이썬 인터프리터 함수와 클래스 읽기

 - 그렇다면, 인터프리터는 함수와 클래스를 어떻게 읽을까?

 

(1) 함수

add(1, 2) # 오류

def add(a, b):
  print(a + b)

add(1, 2) # 정상 실행

 - 예시 코드와 같이 함수가 존재하고, 함수를 호출한다고 가정할 때 위의 add() 호출 라인은 오류가 날 것이다.

 - 그 이유는, 인터프리터는 위에서 아래로 읽기 때문에 위의 add() 호출을 하려고 해도 메모리에 def 함수가 정의되어있지 않기때문

 - 즉, 인터프리터는 위에서 아래로 읽는 과정에서 함수를 선언한 부분을 만나게 되면, 해당 함수를 메모리에 저장을 하게 된다.

 - 그러다 함수 호출 부분을 만나면 기억한 함수를 호출해 코드블록을 실행하는 원리이다.

 - 클래스 또한 마찬가지이다.

 

(2) import

# test5.py
import test4
test4.add(1, 2)
# import test4 -> 에러남

# test4.py
def add(a, b):
  print(a + b)

 - 이렇게 import를 맨 위에 선언하는 이유도 인터프리터의 동작 원리 때문인 것이다.

 - 인터프리터의 의해 해당 import 라인이 읽히게 되면, 파일(모듈)의 내용을 메모리에 로드하고 다음 코드를 실행한다.

 - 그렇기 때문에 import 라인이 맨위에 있는 것이다. ( 참고로 아래에 두고 해당 함수 호출 시 오류 )

 


4. 정리

 - 정리를 하면, 파이썬에서 인터프리터는 하나의 파이썬 언어로 만들어진 코드를 실행하기 위한 프로그램임.

 - 파이썬 인터프리터에는 "컴파일러", "인터프리터" 두 가지가 들어가 있음. 즉, 파이썬은 두 가지를 동시에 이용을 함.

 - 즉, 다른 언어와 다르게 파이썬은 실행 시, 인터프리터 한 곳에서 컴파일 인터프리터 두 가지 작업을 수행하며 실행됨.

 - 자바를 예로 들면, 자바는 컴파일 시 .class 파일을 직접 가지고 있다가 해당 파일을 JVM에 넘겨 실행하는 방식임.

 - 차이를 보면, 파이썬은 .pyc 파일을 직접 가지고 있지 않고 바로 실행을 시키는 느낌이라 보면될듯.

- 인터프리터 자체의 개념을 이해하기 보다는, 직접 언어를 이용해 흐름을 보면 생각보다 매우 쉬운 개념임.

'공부 > ⚡Python' 카테고리의 다른 글

[Python] 10강 - 객체지향  (1) 2025.04.18
[Python] 9강 - 함수  (0) 2025.04.17
[Python] 7강 - 반복 구조  (0) 2025.04.17
[Python] 6강 - 선택 구조  (0) 2025.04.16
[Python] 5강 - 순차 구조 및 제어 구조  (0) 2025.04.15
'공부/⚡Python' 카테고리의 다른 글
  • [Python] 10강 - 객체지향
  • [Python] 9강 - 함수
  • [Python] 7강 - 반복 구조
  • [Python] 6강 - 선택 구조
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (233)
      • 방송통신대학교 (87)
        • ⚙️컴퓨터의 이해 (11)
        • 💻컴퓨터과학 개론 (15)
        • 🔢자료구조 (14)
        • 🧬알고리즘 (10)
        • ⚙️운영체제 (14)
        • 🕸️이산수학 (11)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • 🖥️컴퓨터과학과 (1)
      • 공부 (72)
        • 📚백엔드 공부 (6)
        • ☕Java (23)
        • 🌳Spring (13)
        • ⚙️C (12)
        • ⚡Python (15)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 네트워크 (7)
        • 📜HTTP (7)
      • 스파르타코딩클럽 (64)
      • 정보 (2)
      • 정리가 필요한 글 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    자료구조
    배열
    C언어
    spring
    이산수학
    유비쿼터스
    운영체제
    Java
    방송대
    자바
    방송통신대학교
    파이썬
    Python
    컴퓨터의 이해
    그래프
    함수
    방통대
    컴퓨터과학과
    컴퓨터과학 개론
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[Python] 파이썬 인터프리터(Interperter) 쉽게 이해하기
상단으로

티스토리툴바