본문 바로가기
Programming/Python

[Python] 패키지 (Package)

by goatlab 2023. 6. 20.
728x90
반응형
SMALL

패키지 (Package)

 

 

점으로 구분된 모듈 이름을 사용하여 구성된 파이썬 모듈 및 하위 패키지의 모음이다. 함수들이 뭉쳐진 하나의 .py 파일 안에 이루어진 것을 모듈이라고 한다. 여러 개의 모듈을 그룹화하면 패키지가 된다. 패키지는 종종 라이브러리라고도 불린다.

 

단순히 __init__.py 라는 특별한 파일이 포함된 디렉토리이다.

 

__init__.py

 

__init__.py 파일은 해당 디렉토리가 패키지의 일부임을 알려주는 역할을 한다. Python 3.3부터는 init파일이 없어도 패키지로 인식하지만 하위 버전 호환을 위해 생성하는 것이 안전하다. 패키지 관련 설정이나 초기화 코드를 포함할 수 있다.

 

/App/__init__.py
print("version: 1.0")
# main.py
import App

 

import하면 바로 __init__.py가 실행되는 것을 확인할 수 있다.

 

__all__

 

패키지의 __init__.py가 __all__이라는 리스트를 정의하는 경우, from package import *를 사용할 때 가져올 모듈 이름의 목록으로 간주된다. 특정 디렉토리의 모듈을 * 기호를 사용하여 import할 경우 이 변수에 정의된 모듈만 import된다.

 

__all__ = ['Service', 'Common']

 

실습

 

App이라는 디렉토리를 생성하여 파이썬 패키지를 만든다. App 디렉토리 내부에 빈 파일인 __init__.py를 생성한다. App 디렉토리 내부에 Utils와 Handlers라는 두 개의 하위 디렉토리를 생성한다. Utils 및 Handlers 하위 디렉토리에 각각 빈 파일인 __init__.py를 생성한다.

 

Utils 하위 디렉토리에 string_utils.py라는 파일을 생성한다. string_utils.py라는 모듈에서 to_upper_case 함수를 사용하여 변환된 텍스트를 출력한다

 

# /App/Utils/string_utils.py
def to_upper_case(s):
    return s.upper()

 

Handlers 하위 디렉토리에 text_handler.py라는 파일을 생성한다. 함수는 문자열을 파라미터로 받아 대문자로 변경하여 리턴한다.

 

# /App/Handlers/text_handler.py
from App.Utils.string_utils import to_upper_case
 
def handle_text(t):
    result = to_upper_case(t)
    print(f"변환된 텍스트: {result}")

 

패키지와 모듈을 가져와 함수를 호출하는 main.py 파일을 생성한다. 

 

from App.Handlers.text_handler import handle_text

input_text = "python package practice"
handle_text(input_text)

728x90
반응형
LIST