C07.파이썬 패키지 구조

학습 목표

이번 강의에서는 파이썬의 패키지 구조를 이해하고 설계하는 방법을 배웁니다. 패키지를 통해 코드를 조직적으로 관리하고, 대규모 프로젝트에서 모듈 간의 관계를 명확하게 정의하는 기술을 익힐 것입니다.

개념 설명

패키지(Package)는 여러 모듈(Module)을 포함하는 디렉토리로 구성된 코드 집합입니다. 패키지는 관련된 모듈을 그룹화하여 코드의 구조를 향상시키고 관리하기 쉽게 만들어 줍니다. 패키지를 정의하기 위해서는 해당 디렉토리에 __init__.py라는 파일을 포함시켜야 하며, 이 파일은 패키지가 파이썬에 의해 패키지로 인식되도록 합니다.

패키지 예제 구조

다음은 간단한 패키지 구조 예시입니다:

my_package/
    ├── __init__.py
    ├── module1.py
    ├── module2.py
    └── sub_package/
        ├── __init__.py
        └── module3.py
  • my_package: 루트 패키지 디렉토리입니다.
  • __init__.py: 패키지를 초기화하는 파일로, 패키지가 로드될 때 실행됩니다.
  • module1.pymodule2.py: 패키지의 주요 모듈입니다.
  • sub_package: 서브 패키지로, 별도의 __init__.py 파일을 포함합니다. 이 안에 또 다른 모듈이 있습니다.

예제 코드

# my_package/module1.py
def function1():
    return "module1의 함수입니다."

# my_package/module2.py
def function2():
    return "module2의 함수입니다."

# my_package/sub_package/module3.py
def function3():
    return "sub_package의 함수입니다."

# my_package/__init__.py
from .module1 import function1
from .module2 import function2
from .sub_package.module3 import function3  # 서브 패키지의 함수 임포트

코드 설명

위 코드는 패키지와 모듈 구조의 기본 예시를 보여줍니다.

  • module1.pymodule2.py: 각각 특정 기능을 하는 간단한 함수를 정의합니다.
  • sub_package/module3.py: 서브 패키지에서 다른 함수를 정의합니다.
  • __init__.py: 패키지가 로드될 때 자동으로 실행되며, 필요한 모듈 및 함수를 임포트하여 패키지를 구성합니다. 이를 통해 상위 패키지에서 하위 모듈을 보다 쉽게 사용할 수 있습니다.

연습 문제

1. 자신의 패키지를 설계하여 두 개의 모듈을 포함하고, 각 모듈에 최소 하나의 함수를 정의해 보세요. __init__.py에서 모듈을 임포트하도록 설정하세요.

2. 서브 패키지를 포함하여 구조를 수정하고, 서브 패키지에 함수 하나를 정의하여 호출해 보세요.

연습 문제 해답

# 패키지 구조 예시
# my_project/
#     ├── my_package/
#     │   ├── __init__.py
#     │   ├── math_operations.py
#     │   └── string_operations.py
#     │   └── sub_package/
#     │       ├── __init__.py
#     │       └── date_operations.py

# my_package/math_operations.py
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

# my_package/string_operations.py
def concatenate(str1, str2):
    return str1 + str2

def uppercase(str_value):
    return str_value.upper()

# my_package/sub_package/date_operations.py
from datetime import datetime

def current_date():
    return datetime.now().date()

# my_package/__init__.py
from .math_operations import add, subtract
from .string_operations import concatenate, uppercase
from .sub_package.date_operations import current_date
### 설명 - **패키지 구조**를 설계하여 여러 모듈을 포함한 방법을 설명합니다. - 코드의 조직화를 통해서 프로젝트 관리의 중요성을 강조하고, 프로그래밍 실습에서 패키지와 모듈의 활용에 대한 이해를 돕습니다. - **연습 문제**를 통해 자신만의 패키지를 만들어보면서 실습 경험을 쌓는 기회를 제공합니다. 이 과정에서 코드 구조를 계획하고 관리하는 능력을 위해 도움이 됩니다.

댓글 쓰기

0 댓글