파이썬 가이드 10 모듈과 패키지

🏷️ 파이썬

모듈과 패키지

파이썬에서 **모듈(Module)**과 **패키지(Package)**는 코드를 체계적으로 구성하고 재사용하기 위한 핵심 개념입니다.

1. 모듈 (Module)

모듈은 파이썬 코드를 담고 있는 단일 .py 파일입니다. 모듈은 함수, 클래스, 변수 등을 정의할 수 있으며, 실행 가능한 코드도 포함할 수 있습니다.

주요 특징: * 파일 단위: 하나의 .py 파일이 하나의 모듈이 됩니다. * 재사용성: 다른 파이썬 프로그램에서 import 문을 사용하여 모듈의 기능을 가져와 사용할 수 있습니다. * 이름 공간: 모듈은 자체적인 이름 공간을 가지므로, 다른 모듈과의 이름 충돌을 방지합니다.

예시: my_module.py라는 파일에 다음과 같은 코드가 있다면:


<!-- -->
# my_module.py
def greet(name):
    return f"Hello, {name}!"

my_variable = 10

다른 파일에서 이 모듈을 사용하려면 import my_module과 같이 가져온 후 my_module.greet("World")my_module.my_variable처럼 접근할 수 있습니다.

2. 패키지 (Package)

패키지는 관련된 여러 모듈을 하나의 디렉토리(폴더)로 묶어 관리하는 방법입니다. 패키지는 파이썬의 모듈 이름 공간을 구조화하는 방법으로, "점(.)"을 사용하여 하위 모듈에 접근합니다.

주요 특징: * 디렉토리 구조: 패키지는 기본적으로 모듈 파일들과 다른 하위 패키지(디렉토리)를 포함하는 폴더입니다. * __init__.py 파일: 파이썬 3.3 이전에는 디렉토리가 패키지로 인식되려면 반드시 __init__.py 파일이 포함되어야 했습니다. 이 파일은 비어있을 수도 있고, 패키지가 초기화될 때 실행될 코드를 포함할 수도 있습니다. 파이썬 3.3부터는 __init__.py 파일이 없어도 패키지로 인식되지만, 여전히 호환성과 특정 기능(예: from package import *)을 위해 사용됩니다. * 계층적 구조: 패키지 안에 또 다른 패키지(서브 패키지)를 포함하여 더 복잡한 계층 구조를 만들 수 있습니다.

예시:

my_package/
├── __init__.py
├── module_a.py
└── sub_package/
    ├── __init__.py
    └── module_b.py

위 구조에서 module_a.py를 가져오려면 import my_package.module_a를 사용하고, module_b.py를 가져오려면 import my_package.sub_package.module_b를 사용합니다.

3. 모듈과 패키지의 관계

4. 라이브러리 (Library)

"라이브러리"는 파이썬에서 공식적인 용어라기보다는 일반적으로 여러 패키지와 모듈을 포함하는 코드의 큰 묶음을 의미합니다. 예를 들어, NumPy나 Pandas와 같은 외부 라이브러리는 실제로는 여러 패키지와 모듈로 구성되어 있습니다.

5. PyPI와 pip

요약하자면, 모듈은 파이썬 코드의 기본 재사용 단위이며, 패키지는 이러한 모듈들을 체계적으로 조직화하여 더 크고 복잡한 애플리케이션을 개발할 수 있도록 돕는 구조입니다.