콘텐츠로 이동

02. 모듈과 패키지 (남의 코드 훔쳐 쓰기)

"코드가 1000줄이 넘어가면 파일을 쪼개야 합니다. 파일 하나는 하나의 역할(Role)을 맡아야 합니다."

1. 모듈 (Module)

개념은 아주 단순합니다. 파이썬 파일(.py) 하나가 곧 모듈입니다. calculator.py라는 파일을 만들면 calculator라는 모듈이 생긴 것입니다.

  • 변수, 함수, 클래스 등을 모아놓은 공구함(Toolbox)입니다.
  • 내가 만든 파일도 모듈이고, 남이 만든 파일도 모듈입니다.
graph LR
    subgraph Module["calculator.py (모듈)"]
        F1[def add]
        F2[def sub]
    end

    subgraph Main["main.py (실행 파일)"]
        Code[import calculator]
        Use[calculator.add]
    end

    Main -->|"가져오기 (import)"| Module

    style Module fill:#fff9c4,stroke:#fbc02d
    style Main fill:#e1f5fe,stroke:#01579b

2. 모듈을 가져오는 3가지 주문 (Import)

초보자가 가장 헷갈리는 것이 import 문법입니다. 딱 3가지만 기억하세요.

문법 의미 비유 예시
import A A라는 공구함을 통째로 가져온다. "공구함 줘" import math
math.pi
from A import B A에서 B라는 도구만 쏙 꺼내온다. "공구함에서 망치만 줘" from math import pi
pi (바로 씀)
import A as B A를 가져오는데, 이름이 기니까 B라고 부르겠다. (별명) "공구함을 '박스'라고 부를게" import pandas as pd
pd.DataFrame

3. 패키지 (Package)

모듈(파일)들이 많아지면 정리할 폴더(Directory)가 필요합니다. 패키지는 "모듈을 담고 있는 폴더"입니다.

구조 예시

game/              # 패키지 (큰 폴더)
    __init__.py    # (관습) 이 폴더는 패키지입니다! 라는 표시
    sound/         # 서브 패키지 (작은 폴더)
        echo.py    # 모듈
    graphic/
        render.py  # 모듈

사용할 때는 점(.)을 찍어서 들어갑니다.

import game.sound.echo
game.sound.echo.play()

4. 핵심 철학: 거인의 어깨에 올라타기

우리가 모듈을 배우는 진짜 이유는 "내가 짜지 않기 위해서"입니다.

  1. 표준 라이브러리 (Standard Library): 파이썬을 설치하면 기본으로 주는 공구함.

    • math (수학), random (랜덤), datetime (날짜), os (파일 관리)
  2. 외부 라이브러리 (3rd Party): 전 세계 천재들이 만들어둔 공구함. (pip로 설치 필요)

    • pandas (엑셀보다 강력한 데이터 도구), requests (웹 통신)

우리가 import pandas를 하는 순간, 수십 년간 쌓인 데이터 분석 노하우가 내 코드 안으로 쏟아져 들어오는 것입니다.

AI와 협업 포인트: 리팩토링(Refactoring)

코드를 짜다 보면 main.py 파일 하나가 500줄, 1000줄로 길어질 때가 있습니다. 이때가 바로 모듈화 타이밍입니다. 직접 쪼개려 하지 말고 AI에게 이렇게 시키세요.

> **프롬프트:**
> "지금 `main.py` 코드가 너무 길어. 여기서 **데이터 처리하는 함수들**만 따로 뽑아서 `data_handler.py`라는 모듈로 분리해줘. 그리고 `main.py`에서는 그걸 import해서 쓰도록 수정해줘."