Skip to Content
💻 코리아IT아카데미 신촌 - 프로그래밍 학습 자료
Python 프로그래밍Unit 8: 모듈과 패키지Topic 4: 나만의 모듈 만들기

Topic 4: 나만의 모듈 만들기 🛠️

🎯 학습 목표

직접 모듈을 만들어서 코드를 재사용하는 방법을 배워요!

  • 모듈 파일 만들기
  • 다른 파일에서 모듈 import하기
  • 모듈을 체계적으로 관리하기

🏗️ 첫 번째 모듈 만들기

1. 모듈 파일 생성

calculator.py 파일을 만들어요:

# 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 "0으로 나눌 수 없어요!" return a / b # 모듈 정보 version = "1.0" author = "나"

2. 모듈 사용하기

main.py 파일에서 사용:

# main.py import calculator # 모듈의 함수 사용 result1 = calculator.add(10, 5) print(f"10 + 5 = {result1}") result2 = calculator.multiply(3, 4) print(f"3 × 4 = {result2}") # 모듈의 변수 사용 print(f"계산기 버전: {calculator.version}")

🎨 실용적인 모듈 만들기

게임 유틸리티 모듈

game_utils.py 파일:

# game_utils.py """게임 개발에 유용한 유틸리티 모듈""" import random def roll_dice(sides=6): """주사위를 굴리는 함수""" return random.randint(1, sides) def flip_coin(): """동전 던지기""" return random.choice(["앞면", "뒷면"]) def draw_card(): """카드 한 장 뽑기""" suits = ["♠", "♥", "♦", "♣"] ranks = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"] suit = random.choice(suits) rank = random.choice(ranks) return f"{suit}{rank}" def create_character(name, job="전사"): """게임 캐릭터 생성""" stats = { "이름": name, "직업": job, "레벨": 1, "체력": random.randint(80, 120), "공격력": random.randint(10, 20), "방어력": random.randint(5, 15) } return stats # 게임 설정 MAX_LEVEL = 99 JOBS = ["전사", "마법사", "궁수", "도적"]

사용 예시:

# game.py import game_utils # 주사위 게임 print("🎲 주사위 게임") player_roll = game_utils.roll_dice() computer_roll = game_utils.roll_dice() print(f"나: {player_roll}") print(f"컴퓨터: {computer_roll}") if player_roll > computer_roll: print("내가 이겼다! 🎉") elif player_roll < computer_roll: print("컴퓨터가 이겼다... 😢") else: print("비겼다! 🤝") # 캐릭터 생성 print("\n🧙 캐릭터 생성") my_character = game_utils.create_character("용사", "전사") for key, value in my_character.items(): print(f"{key}: {value}")

📁 모듈 구조화하기

여러 파일로 분리

프로젝트 구조:

my_project/ ├── main.py ├── utils/ │ ├── __init__.py (빈 파일) │ ├── math_utils.py │ └── string_utils.py

utils/math_utils.py:

# utils/math_utils.py """수학 관련 유틸리티""" def factorial(n): """팩토리얼 계산""" if n <= 1: return 1 return n * factorial(n - 1) def is_prime(n): """소수 판별""" if n < 2: return False for i in range(2, int(n ** 0.5) + 1): if n % i == 0: return False return True

utils/string_utils.py:

# utils/string_utils.py """문자열 관련 유틸리티""" def reverse_string(text): """문자열 뒤집기""" return text[::-1] def is_palindrome(text): """회문 검사""" clean_text = text.lower().replace(" ", "") return clean_text == clean_text[::-1] def count_vowels(text): """모음 개수 세기""" vowels = "aeiouAEIOU" return sum(1 for char in text if char in vowels)

사용하기:

# main.py from utils import math_utils, string_utils # 수학 유틸리티 사용 print(f"5! = {math_utils.factorial(5)}") print(f"17은 소수? {math_utils.is_prime(17)}") # 문자열 유틸리티 사용 text = "Hello World" print(f"'{text}' 뒤집기: {string_utils.reverse_string(text)}") print(f"모음 개수: {string_utils.count_vowels(text)}")

🌟 if __name__ == "__main__" 이해하기

모듈이 직접 실행될 때만 특정 코드를 실행하고 싶을 때 사용해요:

# my_module.py def greet(name): return f"안녕하세요, {name}님!" def calculate_age(birth_year): import datetime current_year = datetime.datetime.now().year return current_year - birth_year # 이 부분은 모듈이 직접 실행될 때만 동작 if __name__ == "__main__": # 모듈 테스트 코드 print("모듈 테스트 시작") print(greet("철수")) print(f"2000년생의 나이: {calculate_age(2000)}")

💡 모듈 작성 팁

1. 명확한 이름 사용

# 좋은 예 ✅ def calculate_average(numbers): return sum(numbers) / len(numbers) # 나쁜 예 ❌ def calc(n): return sum(n) / len(n)

2. 문서화 (Docstring)

def find_max_value(numbers): """ 리스트에서 최대값을 찾는 함수 매개변수: numbers (list): 숫자 리스트 반환값: int/float: 최대값 """ return max(numbers)

3. 에러 처리

def safe_divide(a, b): """안전한 나눗셈 함수""" try: return a / b except ZeroDivisionError: print("0으로 나눌 수 없어요!") return None except TypeError: print("숫자만 입력해주세요!") return None

💡 퀴즈: 모듈 만들기 이해도 체크

Q1. 모듈 파일의 확장자는?

💡 정답 확인

정답: .py

파이썬 모듈은 일반 파이썬 파일과 같은 .py 확장자를 사용해요!

Q2. if __name__ == "__main__": 의 역할은?

💡 정답 확인

정답: 모듈이 직접 실행될 때만 특정 코드를 실행하게 함

  • 모듈로 import될 때는 실행되지 않음
  • 파일을 직접 실행할 때만 동작
  • 모듈 테스트 코드를 넣기에 좋음

✅ 나만의 모듈 만들기 마스터 체크리스트

✅ 나만의 모듈 만들기 마스터 체크리스트

🚀 다음 단계

모듈과 패키지를 모두 마스터했어요! 🎉

이제 여러분은:

  • 모듈을 import해서 사용할 수 있어요
  • 유용한 내장 모듈들을 활용할 수 있어요
  • pip로 외부 패키지를 설치할 수 있어요
  • 나만의 모듈을 만들 수 있어요

다음 유닛에서는 이런 모듈들을 활용해서 파일을 다루는 방법을 배워볼게요!

Last updated on