📦 Chapter 7-41. 패키지
1️⃣ 패키지란?
파이썬 패키지는 코드를 구조화하고 재사용성을 향상시키는 중요한 개념입니다. 패키지는 모듈의 집합으로, 계층적 구조를 가지고 있어 대규모 프로젝트에서도 효율적으로 관리할 수 있습니다.
✅ 패키지의 특징
- 계층적 구조: 폴더와 파일을 통해 구조적으로 관리.
- 코드 재사용성: 필요한 모듈만 불러서 사용 가능.
- 유지보수 용이성: 파일과 기능별로 구분하여 관리.
- __init__.py 필요: 패키지임을 인식하게 해주는 파일.
📂 패키지 디렉토리에는 반드시 __init__.py 파일이 포함되어야 합니다.
2️⃣ 패키지 실습
🛠️ 실습 준비하기
- module_package 폴더 생성
- module_package 안에 oz_package 폴더 생성
- oz_module_1.py, oz_module_2.py 파일 생성
- main.py 파일 생성
- 각 폴더에 __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 |