Dev./Python

Python - 패키지

Ivan'show 2023. 6. 12.
728x90
반응형
  • 패키지는 점으로 구분된 모듈 이름을 사용하여 구성된 파이썬 모듈 및 하위 패키지의 모음

      from MyApp.Handlers.text_handler import handle_text # 여기서 '.' 로 구분 되어 있는 
  • 단순히 보면 __init__.py 라는 특별한파일이 포함된 디렉터리 이다.

  • __init__.py 의 존재는 해당 디렉터리가 파이썬 패키지임을 나타낸다.

실습 : 패키지 및 하위 패키지 생성

  1. MyApp 이라는 디렉터리를 생성하여 파이썬 패키지를 만든다.
  2. MyApp 디렉터리 내부에 빈 파일인 __init__.py 를 생성한다.
  3. MyApp 디렉터리 내부에 UtilsHandlers 라는 두 개의 하위 디렉터리를 생성한다.
  4. Utilshandlers 하위 디렉터리에 각각 빈 파일인 __init__.py 를 생성한다.

실습 : 모듈 작성 및 함수 구현

  1. Utils 하위 디렉터리에 string_utils.py 라는 파일을 생성한다.

  2. string_utils.py 에 다음 코드를 추가하여 문자열을 대문자로 변환하는 함수를 구현합니다.

     def to_upper_case(s):
             return s.upper()
  3. Handlers 하위 디렉터리에 text_handler.py 라는 파일을 생성한다.

  4. text_handler.py 에 다음 코드를 추가하여 문자열을 받아 대문자로 변환하고 결과를 출력하는 함수를 구현한다.

     from MyApp.Utils.string_utils import to_upper_case
    
     def handle_text(text):
         result = to_upper_case(text)
         print(f"변환된 텍스트: {result}")

실습 : 패키지 사용

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

  2. main.py 에 다음 코드를 추가하여 MyApp.Handlers.text_handler 에서 handle_text 함수를 호출한다.

     # 파이썬 패키지
     from MyApp.Handlers.text_handler import handle_text
    
     input_text = "python_basic package practice"
     handle_text(input_text)
     # 변환된 텍스트: PYTHON_BASIC PACKAGE PRACTICE

__all__ 변수

  • 패키지의 __init__.py__all__ 이라는 리스트를 정의하는 경우, from package import * 를 사용할 때 가져올 모듈 이름의 목록으로 간주된다.

  • 예를 들어 MyApp/__init__.py 에 다음 코드를 추가할 수 있다.

      __all__ = ['Service', 'Common']
728x90
반응형

댓글