패키지 (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)
'Programming > Python' 카테고리의 다른 글
[Python] NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020 (0) | 2023.07.21 |
---|---|
[Python] 에러 핸들링 (0) | 2023.06.20 |
[Python] 디렉토리 (Directory) (2) (0) | 2023.06.20 |
[Python] 디렉토리 (Directory) (1) (0) | 2023.06.20 |
[Python] 파일 위치 이동 및 확인 (2) (0) | 2023.06.20 |