학습 목표
이번 강의에서는 파이썬의 모듈과 패키지를 사용하여 코드 구조를 효율적으로 관리하는 방법을 배울 것입니다. 이를 통해 코드의 재사용성을 높이고, 더 깨끗하고 조직적인 파일 구조를 만드는 방법을 익힐 수 있습니다.
개념 설명
모듈(Module)은 기능별로 코드를 패키징한 파일로, 다른 파이썬 파일에서 사용할 수 있는 함수, 클래스, 변수 등을 정의하는 데 사용됩니다. 모듈을 사용하면 코드를 보다 구조화하고, 다양한 프로그램에서 이를 재사용할 수 있습니다. 한편, 패키지(Package)는 여러 모듈을 포함하는 디렉토리로, 동일한 이름 공간을 공유하는 모듈들을 그룹화합니다. 패키지를 정의하려면, 해당 디렉토리 내에 '__init__.py' 파일을 포함해야 합니다. 이를 통해 관련된 모듈들을 관리하고, 코드의 가독성과 유지보수성을 높일 수 있습니다.
예제 코드
# my_module.py라는 모듈 파일 예제
def greet(name):
"""간단한 인사말을 출력하는 함수"""
return f"안녕하세요, {name}님!"
def add(a, b):
"""두 수의 합을 반환하는 함수"""
return a + b
# main.py에서 모듈 사용 예제
import my_module # 사용자 정의 모듈 불러오기
# 함수 호출
greeting = my_module.greet("홍길동")
sum_result = my_module.add(5, 7)
print(greeting) # "안녕하세요, 홍길동님!" 출력
print("5와 7의 합:", sum_result) # 12 출력
코드 설명
위 코드는 'my_module.py'라는 이름의 모듈 파일을 정의하고, 그 안에 두 개의 함수를 작성하는 예제입니다. 'greet' 함수는 인사말을 반환하고, 'add' 함수는 두 수의 합을 반환합니다. 'main.py' 파일에서 'my_module' 모듈을 임포트하여 이 함수들을 호출하는 방법을 보여줍니다. 모듈을 사용하면 코드의 재사용이 용이해지고, 구조적으로 깔끔한 코드를 작성할 수 있습니다.
연습 문제
1. 자신만의 모듈을 만들어서 두 수의 곱을 반환하는 함수를 작성하고, 이를 호출하는 프로그램을 작성해 보세요.
2. 여러 개의 관련된 함수를 포함하는 패키지를 만들어 보고, 이를 사용하여 작업을 수행하는 프로그램을 작성해 보세요.
연습 문제 해답
# 1번 문제: 곱셈을 위한 모듈 만들기
# multiply_module.py라는 모듈 파일을 작성
def multiply(a, b):
"""두 수의 곱을 반환하는 함수"""
return a * b
# main.py에서 모듈 사용
import multiply_module # 모듈 임포트
num1 = 3
num2 = 4
result = multiply_module.multiply(num1, num2)
print(f"{num1}와 {num2}의 곱:", result) # 12 출력
# 2번 문제: 관련 함수를 포함하는 패키지 만들기
# my_package 디렉토리를 만들고, __init__.py와 관련된 모듈 파일을 작성
# my_package/__init__.py
def say_hello(name):
return f"안녕하세요, {name}님!"
# my_package/greetings.py
def say_goodbye(name):
return f"안녕히 가세요, {name}!"
# main.py에서 패키지 사용
from my_package import say_hello
from my_package import greetings
print(say_hello("김철수")) # "안녕하세요, 김철수님!" 출력
print(greetings.say_goodbye("김철수")) # "안녕히 가세요, 김철수!" 출력
### 설명
- **모듈**: 사용자가 정의한 기능을 담고 있는 자바스크립트 파일 `my_module.py`를 생성하고, 이를 import하여 사용합니다.
- **패키지**: 여러 모듈을 포함하는 디렉토리를 생성하고 이를 통해 여러 관련 함수를 그룹화하여 관리합니다. `__init__.py` 파일이 해당 디렉토리를 패키지로 인식하게 합니다.
- 연습 문제를 통해 모듈과 패키지 생성 및 사용을 실습해볼 수 있습니다.
0 댓글