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())
'파이썬 강좌(초급) > 10.모듈과 패키지' 카테고리의 다른 글
10.모듈과 패키지 - 6) 패키지 및 모듈 설치 (pip install ~~~) (0) | 2024.05.04 |
---|---|
10.모듈과 패키지 - 5) 패키지 및 모듈 위치 찾기 (0) | 2024.05.04 |
10.모듈과 패키지 - 4) if __name__ == "__main__": (0) | 2024.05.04 |
10.모듈과 패키지 - 3) __all__ 변수 (0) | 2024.04.14 |
10.모듈과 패키지 - 1) 모듈 (0) | 2024.04.14 |