- 컬렉션즈 모듈 (defaultdict, Counter, deque)
모듈과 패키지: 코드의 재사용과 조직화
파이썬이 널리 사랑받는 이유 중 하나는 모듈과 패키지를 통한 체계적인 코드 관리에 있다. 모듈은 하나의 .py
파일로, 변수, 함수, 클래스 등 연관된 항목을 한데 묶는다. 필요한 모듈은 import
키워드로 손쉽게 불러오고, 꼭 필요한 부분만 선택적으로 가져오려면 from ... import ...
형태를 활용한다. 직접 모듈을 만들 때는 코드의 논리적 구조를 먼저 생각하자. 예를 들어, 수학 연산을 담당하는 math_util.py
를 만들어 여러 프로그램에서 반복적으로 재활용할 수 있다.
패키지는 여러 모듈을 하나로 묶는 더 큰 단위다. 디렉터리 구조를 이용해 폴더별로 모듈을 정리하고, 각 폴더에 __init__.py
파일을 포함해 파이썬에게 "이곳은 패키지다"라고 알린다. 이렇게 하면 대형 프로젝트에서도 관련 기능끼리 깔끔하게 관리가 가능하다. 예를 들어, calculator
패키지 아래 basic.py
, advanced.py
처럼 세분화가 가능하다.
가상 환경과 의존성 관리
프로젝트별로 필요한 라이브러리와 파이썬 버전이 다를 수 있어, 가상 환경은 필수가 되었다. 가상 환경을 사용하면 각 프로젝트가 서로 독립된 파이썬 환경 안에서 동작하므로 라이브러리 충돌이나 버전 문제로부터 자유로워진다. Python 3.3 이상에 포함된 venv
를 이용하면 간단히 가상 환경을 만들 수 있다. 터미널에서 python -m venv myenv
로 환경을 만들고, 활성화 후에는 필요한 라이브러리 설치 및 관리를 자유롭게 진행할 수 있다. 프로젝트별로 요구하는 패키지 목록을 requirements.txt
에 기록해두면 협업이나 이식성도 한결 수월해진다.
파이썬 프로젝트 구조의 정석
프로젝트가 커질수록 디렉터리 구조와 코드 배치는 개발 효율에 직결된다. 보통 최상위에는 프로젝트 설명을 위한 README.md
, 패키지 설치를 위한 setup.py
나 pyproject.toml
, 의존성 목록인 requirements.txt
가 자리잡는다. 소스 코드는 src
나 프로젝트명과 동일한 폴더 아래에 모듈별로 정돈한다. 테스트 코드, 설정 파일, 문서도 각각의 폴더로 분리하는 것이 좋다. 모듈과 패키지는 기능 단위로 작게 설계하고, 불필요한 의존성은 배제한다. 이런 구조화는 자연스럽게 유지보수성과 확장성을 확보한다.
중급 개발자를 위한 정리와 제언
파이썬의 모듈·패키지 시스템, 가상 환경, 프로젝트 구조는 단순히 코드를 나누는 문제가 아니다. 이는 협업의 기본이자, 장기적으로 더 큰 프로젝트에 참여하거나 직접 이끌 때 필수적인 기반이다. 다양한 자료와 실전 예제를 꾸준히 실습하며 자신만의 조직화 방식을 만들어 가길 바란다.