파이썬 강좌(초급)/10.모듈과 패키지

10.모듈과 패키지 - 2) 패키지

파기차차 2024. 4. 14. 11:46
728x90
반응형
SMALL

 

 

1)패키지가 뭐에요?

  • 패키지는 여러 모듈을 모아놓은 디렉토리(폴더)입니다. 패키지 안에는 __init__.py 파일이 있어야 하며, 이 파일은 해당 디렉토리를 패키지로 인식하게 합니다.
  • 패키지는 하위 패키지를 포함할 수 있고, 모듈과 하위 패키지는 점을 사용하여 접근할 수 있습니다.
  • 패키지는 프로젝트를 더 큰 단위로 구성하고 관리하기 쉽도록 도와줍니다.

 

아래 구조에서 my_package 폴더 아래에 __init__.py가 있고, 서브 패키지로 subpackage가 있습니다.

my_package/
|-- __init__.py
|-- module1.py
|-- module2.py
|-- subpackage/
|   |-- __init__.py
|   |-- module3.py
|-- main.py

 

아래에서 module1의 add()함수를 사용하려면 main.py 파일에서 해당 모듈을 임포트 하고, 모듈 + "." 으로 접근(module1.add(3,5))해야 합니다.

# my_package/module1.py
def add(a, b):
    return a + b
 
# main.py
from my_package import module1
 
result = module1.add(3, 5)
print(result)  # 출력: 8

8

 

 

 

 

 

아래와 같이 thailand 모듈과 bietnam 모듈이 있습니다.

 

thailand.py

class ThailandPackage:
    def detail(self):
        print("태국 패키지 입니다.")
 

 

bietnam.py

class VietnamPackage:
    def detail(self):
        print("베트남 패키지 입니다.")
 

 

 

 

thailand 모듈을 임포트 하려면 패키지 + "." + 모듈 형식으로 사용해야 합니다.

main.py

import travel.thailand
# import travel.thailand.ThailandPackage
trip_to = travel.thailand.ThailandPackage()
trip_to.detail()
 

태국 패키지 입니다.

 

 

아래와 같이 임포트에 패키지.모듈.클래스 와 같은 형태로는 지정할 수 없습니다.

# import travel.thailand
import travel.thailand.ThailandPackage
trip_to = travel.thailand.ThailandPackage()
trip_to.detail()
 

ModuleNotFoundError: No module named 'travel.thailand.ThailandPackage'; 'travel.thailand' is not a package

 

 

특정 클래스만 지정하고 싶은 경우 아래와 같은 표현(from 패키지.모듈 import 클래스)을 사용합니다.

이경우 클래스로 바로 접근이 가능합니다.

from travel.thailand import ThailandPackage
trip_to = ThailandPackage()
trip_to.detail()
 

태국 패키지 입니다.

 

 

from 패키지 import 모듈 형태로 임포트한 경우 모듈.클래스 형태로 접근해야 합니다.

from travel import vietnam
trip_to = vietnam.VietnamPackage()
trip_to.detail()
 

베트남 패키지 입니다.

 

 

 

 

2) 실습

 

(1) 아래와 같은 파일 구조가 있습니다. 여기서 mypackage를 패키지로 만들려면 어떻게 해야 할까요?

mypackage/              # 패키지 디렉토리
    module1.py          # 모듈 1
    module2.py          # 모듈 2

 

 

모범답안

더보기
mypackage 폴더 아래에 __init__.py 파일을 생성해야 합니다.

 

 

(2) 아래 파일 구조에서 module1.py 파일의 function()을 사용하려면 어떻게 코딩해야 할까요?

mypackage/              # 패키지 디렉토리
    __init__.py         # 패키지 초기화 파일
    module1.py          # 모듈 1
    module2.py          # 모듈 2

main.py              # main.py에서 module1.py 파일의 function()함수를 사용하려면 어떻게 해야 하나요?

 

 

모범답안

더보기
from mypackage import module1
module1.function()

 

 

 

(3) 아래 코드에서 modul1.py 파일의 func1()함수를 호출하는 코드를 넣으세요

# 모듈 간 함수 호출 예제
# module1.py
def func1():
    print("Function 1")

# main.py
from mypackage import module1
print(____________________)  # modul1.py 파일의 func1()함수를 호출하는 코드를 넣으세요

 

 

모범답안

더보기
# 모듈 간 함수 호출 예제
# module1.py
def func1():
    print("Function 1")

# main.py
from mypackage import module1
print(module1.func1())

 

 

728x90
반응형
LIST