Python 패키지란 무엇인가?
패키지(Package)는 모듈과 하위 패키지, 그리고 그 아래의 패키지까지 포함하여 하나의 Python 애플리케이션 환경을 정의하는 계층적인 파일 디렉터리 구조입니다. 패키지를 활용하면 관련된 모듈들을 체계적으로 묶을 수 있어 코드의 재사용성과 유지보수성이 크게 향상됩니다.
패키지 예제: Phone 디렉터리
예를 들어 Phone 디렉터리 안에 Pots.py 파일이 있다고 가정해 보겠습니다. 이 파일에는 다음과 같은 소스 코드가 작성되어 있습니다.
#!/usr/bin/python
def Pots():
print("I'm Pots Phone")
같은 방식으로 서로 다른 기능을 담당하는 두 개의 파일을 추가로 만들 수 있습니다.
Phone/Isdn.py—Isdn()함수 포함Phone/G3.py—G3()함수 포함
__init__.py 파일의 역할
이제 Phone 디렉터리 안에 __init__.py 파일을 하나 더 생성합니다. 이 파일은 해당 디렉터리가 단순한 폴더가 아니라 Python 패키지임을 알려주는 중요한 역할을 합니다.
Phone/__init__.py
Phone 패키지를 임포트하는 즉시 모든 함수를 사용할 수 있도록 하려면, __init__.py에 다음과 같이 명시적인 import 문을 작성해야 합니다.
from Pots import Pots from Isdn import Isdn from G3 import G3
위 코드를 __init__.py에 추가하면, Phone 패키지를 임포트하는 순간 세 가지 함수를 모두 곧바로 사용할 수 있습니다.
#!/usr/bin/python # 이제 Phone 패키지를 임포트합니다. import Phone Phone.Pots() Phone.Isdn() Phone.G3()
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
I'm Pots Phone I'm 3G Phone I'm ISDN Phone
정리 및 확장
위 예제에서는 각 파일에 하나의 함수만 담았지만, 실제로는 한 파일 안에 여러 개의 함수를 정의할 수 있습니다. 나아가 파일 내에 다양한 Python 클래스를 정의하고, 그 클래스들을 기반으로 패키지를 구성하는 것도 가능합니다. 이처럼 패키지를 체계적으로 설계하면 대규모 프로젝트에서도 코드를 깔끔하게 관리하고 협업 효율을 높일 수 있습니다.