PYTHON - 예외처리와 모듈 (Chapter 7-41. 패키지)

2025. 3. 14. 15:31·Python

📦 Chapter 7-41. 패키지

1️⃣ 패키지란?

파이썬 패키지는 코드를 구조화하고 재사용성을 향상시키는 중요한 개념입니다. 패키지는 모듈의 집합으로, 계층적 구조를 가지고 있어 대규모 프로젝트에서도 효율적으로 관리할 수 있습니다.

✅ 패키지의 특징

  • 계층적 구조: 폴더와 파일을 통해 구조적으로 관리.
  • 코드 재사용성: 필요한 모듈만 불러서 사용 가능.
  • 유지보수 용이성: 파일과 기능별로 구분하여 관리.
  • __init__.py 필요: 패키지임을 인식하게 해주는 파일.

📂 패키지 디렉토리에는 반드시 __init__.py 파일이 포함되어야 합니다.


2️⃣ 패키지 실습

🛠️ 실습 준비하기

  1. module_package 폴더 생성
  2. module_package 안에 oz_package 폴더 생성
  3. oz_module_1.py, oz_module_2.py 파일 생성
  4. main.py 파일 생성
  5. 각 폴더에 __init__.py 파일 추가 (빈 파일이어도 OK)

📄 oz_module_1.py

def module1_function():
    return "module_1의 함수가 호출되었습니다."

val_1 = "module_1의 변수"

📄 oz_module_2.py

def module2_function():
    return "module_2의 함수가 호출되었습니다."

val_2 = "module_2의 변수"

📄 main.py

# oz_package 패키지의 oz_module_1 모듈을 'one'이라는 별칭으로 임포트합니다.
import oz_package.oz_module_1 as one

# oz_package 패키지의 oz_module_2 모듈을 'two'라는 별칭으로 임포트합니다.
import oz_package.oz_module_2 as two

# oz_module_1 모듈에서 정의된 변수와 함수 출력
print(one.val_1)
print(one.module1_function())

# oz_module_2 모듈에서 정의된 변수와 함수 출력
print(two.val_2)
print(two.module2_function())

✅ 출력 결과

module_1의 변수
module_1의 함수가 호출되었습니다.
module_2의 변수
module_2의 함수가 호출되었습니다.

3️⃣ 패키지의 __init__.py 역할

  • 패키지임을 명시: 파이썬 3.3 이전 버전에서는 필수였지만, 최신 버전에서는 생략 가능.
  • 초기화 코드 작성: 패키지가 임포트될 때 자동으로 실행되는 코드를 작성 가능.
  • 모듈 공개 설정: 특정 모듈만 외부에 공개하도록 설정 가능.
# oz_package/__init__.py
__all__ = ["oz_module_1", "oz_module_2"]

💡 __all__ 리스트를 사용하면, 해당 리스트에 명시된 모듈만 외부에서 임포트할 수 있습니다.


📚 이해도 체크리스트

1️⃣ 다음 중 파이썬 패키지에 대한 설명으로 옳지 않은 것은?

  • (a) 패키지는 모듈의 집합으로, 계층적 구조를 가지고 있습니다.
  • (b) 패키지 디렉토리에는 __init__.py 파일이 반드시 포함되어야 합니다.
  • (c) 패키지를 사용하면 대규모 프로젝트의 코드를 효율적으로 관리할 수 있습니다.
  • (d) 패키지는 반드시 표준 라이브러리의 일부여야 합니다.

정답: (d)

  • 패키지는 사용자 정의 패키지나 서드파티 패키지로도 사용 가능합니다.

2️⃣ 다음 코드에 대한 설명으로 옳지 않은 것은?

import oz_package.oz_module_1 as one
import oz_package.oz_module_2 as two

print(one.val_1)
print(two.val_2)
  • (a) oz_package는 패키지이고, oz_module_1과 oz_module_2 는 이 패키지에 포함된 모듈입니다.
  • (b) oz_module_1 과 oz_module_2 는 one 과 two 라는 별칭으로 임포트되었습니다.
  • (c) one.val_1 과 two.val_2 는 각각 oz_module_1 과 oz_module_2 모듈에서 정의된 변수입니다.
  • (d) __init__.py 파일이 없어도 패키지는 정상적으로 작동합니다.

정답: (d)

  • 최신 파이썬 버전에서는 __init__.py가 없어도 작동하지만, 명시적으로 패키지로 인식하도록 작성하는 것이 좋습니다.

💡 TIP! 패키지 관리 잘하는 방법

  • 📂 구조화된 폴더 관리: 모듈과 관련된 기능은 동일한 패키지로 묶어 관리하세요.
  • 📝 __init__.py로 패키지 관리: 필요한 모듈만 __all__로 공개해 보안과 효율성을 유지하세요.
  • 📚 패키지 문서화: 패키지나 모듈 사용법을 주석이나 문서로 기록해두면 나중에 참고하기 좋습니다.

이렇게 패키지를 구성하고 관리하면, 복잡한 프로젝트에서도 코드를 체계적으로 관리할 수 있어 유지 보수가 훨씬 쉬워집니다! 🚀

'Python' 카테고리의 다른 글

PYTHON - 클래스 고급 (Chapter 8-43. 객체와 클래스 선언하기)  (0) 2025.03.17
PYTHON - 특강노트 (2025-03-14)  (0) 2025.03.14
PYTHON - 예외처리와 모듈 (Chapter 7-40. 모듈 만들기)  (0) 2025.03.14
PYTHON - 예외처리와 모듈 (Chapter 7-39. 함수 데코레이터)  (0) 2025.03.14
PYTHON - 예외처리와 모듈 (Chapter 7-38. 외부모듈)  (0) 2025.03.14
'Python' 카테고리의 다른 글
  • PYTHON - 클래스 고급 (Chapter 8-43. 객체와 클래스 선언하기)
  • PYTHON - 특강노트 (2025-03-14)
  • PYTHON - 예외처리와 모듈 (Chapter 7-40. 모듈 만들기)
  • PYTHON - 예외처리와 모듈 (Chapter 7-39. 함수 데코레이터)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (702)
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (40)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
PYTHON - 예외처리와 모듈 (Chapter 7-41. 패키지)
상단으로

티스토리툴바