Python 모듈과 패키지: 모듈화 프로그래밍

목차

  1. 서론
  2. 모듈이란 무엇인가?
    1. 모듈의 기본 개념
    2. 모듈의 생성과 사용
  3. 패키지란 무엇인가?
    1. 패키지의 기본 개념
    2. 패키지의 생성과 사용
  4. 모듈과 패키지의 장점
  5. 모듈과 패키지 사용 예제
    1. 간단한 모듈 생성과 사용
    2. 간단한 패키지 생성과 사용
  6. 모듈과 패키지 관리 도구
  7. 실습 예제
  8. 마무리
  9. 추천 태그

1. 서론

Python은 모듈화 프로그래밍을 통해 코드의 재사용성과 유지보수성을 높일 수 있는 강력한 기능을 제공합니다. 모듈과 패키지를 사용하면 큰 프로젝트를 작은 단위로 나누어 관리할 수 있습니다. 이번 포스팅에서는 모듈과 패키지의 기본 개념부터 사용법까지 초보자도 이해할 수 있도록 자세히 설명하겠습니다.


2. 모듈이란 무엇인가?


2.1 모듈의 기본 개념

모듈은 Python 파일 하나로, 함수, 클래스, 변수 등을 포함할 수 있습니다. 모듈을 사용하면 코드를 재사용하고, 논리적으로 묶을 수 있습니다.


2.2 모듈의 생성과 사용

모듈을 생성하려면 .py 파일을 작성하면 됩니다. 예를 들어, mymodule.py라는 모듈을 생성해보겠습니다.


# mymodule.py
def greet(name):
    return f"Hello, {name}!"

모듈을 사용하려면 import 키워드를 사용합니다.


# main.py
import mymodule

print(mymodule.greet("Alice"))  # 출력: Hello, Alice!

3. 패키지란 무엇인가?


3.1 패키지의 기본 개념

패키지는 여러 모듈을 묶은 디렉터리입니다. 패키지는 디렉터리 내에 __init__.py 파일을 포함하여 모듈들을 논리적으로 그룹화합니다.


3.2 패키지의 생성과 사용

패키지를 생성하려면 디렉터리를 만들고, 그 안에 __init__.py 파일을 생성합니다. 예를 들어, mypackage라는 패키지를 생성해보겠습니다.


mypackage/
    __init__.py
    module1.py
    module2.py

각 모듈 파일에 함수를 정의합니다.


# module1.py
def func1():
    return "This is function 1"

# module2.py
def func2():
    return "This is function 2"

패키지를 사용하려면 다음과 같이 import 키워드를 사용합니다.


# main.py
from mypackage import module1, module2

print(module1.func1())  # 출력: This is function 1
print(module2.func2())  # 출력: This is function 2

4. 모듈과 패키지의 장점

  • 코드 재사용성: 한 번 작성한 모듈과 패키지는 여러 프로젝트에서 재사용할 수 있습니다.
  • 코드 유지보수성: 코드를 논리적으로 분리하여 유지보수와 디버깅이 쉽습니다.
  • 네임스페이스 관리: 모듈과 패키지를 사용하여 네임스페이스를 관리할 수 있어 변수나 함수 이름의 충돌을 방지할 수 있습니다.

5. 모듈과 패키지 사용 예제


5.1 간단한 모듈 생성과 사용

mathmodule.py라는 모듈을 생성하여 기본적인 수학 함수를 포함해보겠습니다.


# mathmodule.py
def add(a, b):
    return a + b

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

이 모듈을 사용하여 두 수의 합과 차를 구하는 프로그램을 작성합니다.


# main.py
import mathmodule

print(mathmodule.add(5, 3))       # 출력: 8
print(mathmodule.subtract(5, 3))  # 출력: 2

5.2 간단한 패키지 생성과 사용

geometry라는 패키지를 생성하여 기본적인 기하학 함수를 포함해보겠습니다.


geometry/
    __init__.py
    circle.py
    rectangle.py

각 모듈 파일에 함수를 정의합니다.


# circle.py
def area(radius):
    return 3.14159 * radius * radius

def circumference(radius):
    return 2 * 3.14159 * radius

# rectangle.py
def area(width, height):
    return width * height

def perimeter(width, height):
    return 2 * (width + height)

이 패키지를 사용하여 원과 직사각형의 면적과 둘레를 구하는 프로그램을 작성합니다.


# main.py
from geometry import circle, rectangle

print(circle.area(5))               # 출력: 78.53975
print(circle.circumference(5))      # 출력: 31.4159
print(rectangle.area(4, 6))         # 출력: 24
print(rectangle.perimeter(4, 6))    # 출력: 20

6. 모듈과 패키지 관리 도구

Python에서는 모듈과 패키지를 관리하기 위한 다양한 도구를 제공합니다. 그 중 대표적인 도구는 pip입니다. pip는 Python 패키지 관리 시스템으로, 패키지를 쉽게 설치하고 관리할 수 있습니다.


패키지 설치 예시:


pip install requests

설치된 패키지 사용 예시:


import requests

response = requests.get("https://api.github.com")
print(response.status_code)  # 출력: 200

7. 실습 예제


예제 1: 간단한 계산기 모듈

간단한 계산기 모듈을 작성하고, 이를 사용하는 프로그램을 작성해보겠습니다.


# calculator.py
def add(a, b):
    return a + b

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

def multiply(a, b):
    return a * b

def divide(a, b):
    if b == 0:
        return "Error: Division by zero"
    return a / b

# main.py
import calculator

print(calculator.add(10, 5))       # 출력: 15
print(calculator.subtract(10, 5))  # 출력: 5
print(calculator.multiply(10, 5))  # 출력: 50
print(calculator.divide(10, 5))    # 출력: 2.0
print(calculator.divide(10, 0))    # 출력: Error: Division by zero

예제 2: 학생 관리 패키지

학생들의 정보를 관리하는 패키지를 작성해보겠습니다.


student_management/
    __init__.py
    student.py
    course.py

각 모듈 파일에 클래스를 정의합니다.


# student.py
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"Student(name={self.name}, age={self.age})"

# course.py
class Course:
    def __init__(self, title, students=None):
        self.title = title
        self.students = students if students is not None else []

    def add_student(self, student):
        self.students.append(student)

    def __str__(self):
        return f"Course(title={self.title}, students={[str(s) for s in self.students]})"

이 패키지를 사용하여 학생과 과정을 관리하는 프로그램을 작성합니다.


# main.py
from student_management.student import Student
from student_management.course import Course

# 학생 생성
student1 = Student("Alice", 20)
student2 = Student("Bob", 22)

# 과정 생성
course = Course("Python Programming")

# 과정에 학생 추가
course.add_student(student1)
course.add_student(student2)

print(course)

8. 마무리

이번 포스팅에서는 Python의 모듈과 패키지에 대해 알아보았습니다. 모듈과 패키지를 사용하면 코드를 재사용하고, 논리적으로 분리하여 관리할 수 있습니다. 다양한 예제를 통해 모듈과 패키지의 활용법을 익혀보시기 바랍니다. 다음 포스팅에서는 더 심화된 Python 주제를 다룰 예정입니다.

이 포스팅이 Python을 처음 접하는 분들에게 도움이 되길 바랍니다.

다음 이전