본문으로 건너뛰기
Python 기초집LESSON 12

모듈과 import

난이도입문
예상 시간30분
선수지식이전 강의

12강. 모듈과 import

1. 이번 강의에서 해결할 문제

한 파일이 길어지면 계산 규칙을 찾고 테스트하기 어렵습니다. 관련 함수와 데이터 모델을 모듈로 나누고 진입점을 분리합니다.

2. 학습 목표

3. 핵심 개념

.py 파일 하나가 모듈이고 모듈을 담은 디렉터리가 패키지가 될 수 있습니다. import 시 모듈 최상위 코드는 한 번 실행됩니다. 실행 코드가 import 때 작동하지 않도록 진입점 가드에 둡니다.

4. 단계별 코드 예시

파일 경로: C:\dev\game-log-analyzer\battle_analyzer\stats.py

battle_analyzer/stats.py
def average_damage(damages):
return sum(damages) / len(damages) if damages else 0.0


def win_rate(results):
if not results:
return 0.0
wins = sum(result == "win" for result in results)
return wins / len(results)

파일 경로: C:\dev\game-log-analyzer\battle_analyzer\__init__.py

battle_analyzer/__init__.py
"""게임 전투 로그 분석 패키지."""

파일 경로: C:\dev\game-log-analyzer\main.py

main.py
from battle_analyzer.stats import average_damage, win_rate


def main():
print(f"평균 피해: {average_damage([80, 120, 150]):.1f}")
print(f"승률: {win_rate(['win', 'loss', 'win']):.1%}")


if __name__ == "__main__":
main()
PowerShell · 실행
New-Item -ItemType Directory -Force .\battle_analyzer
New-Item -ItemType File -Force .\battle_analyzer\__init__.py
py -3.13 .\main.py

5. 코드가 동작하는 이유

프로젝트 루트에서 실행하면 Python이 해당 경로에서 battle_analyzer 패키지를 찾습니다. 직접 실행한 main의 __name__"__main__"이고 import된 모듈은 정식 모듈명이므로 진입점 코드는 직접 실행할 때만 작동합니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

모듈과 import 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“모듈과 import” 코드 리뷰에서 동작 원리와 일치하는 설명은 무엇인가요?
  2. 문제 2“모듈과 import”의 작업 기준으로 ‘표준 라이브러리와 같은 파일명 사용’을 진단하거나 바로잡은 선택은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

12강. 모듈과 import 미완료 상태