C08.파이썬 모듈과 패키지

학습 목표

이번 강의에서는 파이썬의 모듈과 패키지를 활용하여 재사용 가능한 코드를 만드는 방법을 배웁니다. 모듈과 패키지를 효과적으로 사용하여 코드의 구조를 개선하고, 다른 프로젝트에서 쉽게 활용할 수 있는 방법을 익힐 것입니다.

개념 설명

모듈(Module)은 재사용 가능한 작은 코드 조각으로, 함수, 클래스, 변수 등을 포함할 수 있는 파이썬 파일입니다. 패키지(Package)는 여러 모듈을 그룹화한 디렉토리로, __init__.py 파일을 포함하여 패키지로 인식됩니다. 모듈과 패키지를 사용하면 코드의 재사용성을 높이고, 프로젝트를 구조적으로 관리할 수 있습니다.

모듈과 패키지 사용 예제

# my_math.py 모듈 생성
def add(a, b):
    """두 수의 합을 반환하는 함수"""
    return a + b

def subtract(a, b):
    """두 수의 차를 반환하는 함수"""
    return a - b

# my_string.py 모듈 생성
def concatenate(str1, str2):
    """두 문자열을 concatenate하는 함수"""
    return str1 + str2

def uppercase(str_value):
    """문자열을 대문자로 변환하는 함수"""
    return str_value.upper()

# my_package/
# ├── __init__.py
# ├── my_math.py
# └── my_string.py

# my_package/__init__.py
from .my_math import add, subtract
from .my_string import concatenate, uppercase

# main.py 메인 스크립트
from my_package import add, subtract, concatenate, uppercase

def main():
    # 숫자 연산
    print("2 + 3 =", add(2, 3))  # 5
    print("10 - 4 =", subtract(10, 4))  # 6

    # 문자열 연산
    print(concatenate("Hello, ", "World!"))  # "Hello, World!"
    print(uppercase("hello"))  # "HELLO"

if __name__ == "__main__":
    main()

코드 설명

  • my_math.pymy_string.py는 각각 간단한 수학과 문자열 조작을 위한 모듈입니다.
  • __init__.py 파일은 패키지를 초기화하고, 외부에서 패키지를 사용할 때 어떤 모듈을 임포트할지를 정의합니다.
  • main.py에서 패키지를 임포트하여 다양한 함수를 호출하고 결과를 출력합니다.

연습 문제

1. 사용자 정의 모듈을 만들어 원주율(π) 계산, 면적 계산 등에 관련된 함수를 정의해 보세요.

2. 패키지를 생성하고 그 안에 여러 관련된 모듈을 추가하여, 통계를 계산하는 프로그램을 작성해 보세요.

연습 문제 해답

# 원주율을 계산하는 모듈: my_geometry.py
import math

def circle_area(radius):
    """원을 계산하는 함수: πr²"""
    return math.pi * (radius ** 2)

def circle_circumference(radius):
    """원의 둘레를 계산하는 함수: 2πr"""
    return 2 * math.pi * radius

# 패키지 구조: my_statistics/
# ├── __init__.py
# ├── statistics.py
# └── my_geometry.py
# 패키지의 __init__.py 파일에서 모듈 불러오기
from .my_geometry import circle_area, circle_circumference

# 사용 예제
from my_geometry import circle_area, circle_circumference

def main():
    radius = 5
    print("반지름이", radius, "인 원의 면적:", circle_area(radius))
    print("반지름이", radius, "인 원의 둘레:", circle_circumference(radius))

if __name__ == "__main__":
    main()
### 설명 - **모듈과 패키지**를 활용하여 코드를 재사용 가능하게 만드는 방법을 자세히 설명합니다. - 여러 기능을 관련 모듈에 분할하여 불필요한 코드 중복을 줄이고, 프로젝트를 조직적으로 관리하는 방법을 보여줍니다. - **연습 문제**를 통해 사용자가 직접 모듈과 패키지를 작성하여 응용해 볼 수 있는 기회를 제공하며, 실습을 통해 이해도를 높일 수 있습니다.

댓글 쓰기

0 댓글