반응형
파이썬 모듈과 패키지
(Python3.X module and Package)
모듈(module) : 코드들을 한 단위로 묶어 사용 할 수 있게 하는 하나의 단위
말은 거창하지만.. 하나의 파일로 이해하는 것도 좋은것 같다.
모듈의 종류 3가지
1. 표준모듈 - Python Package 안에 포함된 모듈
2. 사용자 생성 모듈 - 내가 만든 모듈
3. 서드파티 모듈 - 협력 업체나 개인이 만들어서 제공하는 모듈
모듈의 사용 예
import math
print (math.sin(math.pi))
from math import
sin, cos
print (sin(1))
from math import
*
print (sin(1)+cos(1)+tan(1)+tanh(1))
# 모듈의 이름이 길 경우 별칭을 주어서 사용
import math as
m
print (m.sin(1)+m.cos(1))
패키지(Package) : 모듈을 모아 놓은 단위
패키지를 만들 때 꼭 !!!!! __init__.py를 만들어야 한다.
__init__.py란?
패키지를 가져올 때 자동으로 실행되는 초기화 스크립트, 없다면 패키지로 간주하지않는다. 즉 일반폴더로 구별된다.
패키지의 생성자 같은 존재이다.
__init__.py에 무엇을 적어야 하는가?
하위 패키지 import
__all__ = ['하위패키지1','하위패키지2'....................]
__version__="0.1"
패키지의 예
패키지 샘플이라는 패키지를 만들고, __init__.py로 하위 패키지 C,D,O를 가져온다.
from .import CostFunction
from .import DataSet
from .import Optimizer
__all__=['DataSet','Optimizer','CostFunction']
__version__="0.1"
각 하위 패키지에도 __init__.py에 초기화를 해준다. 그중 CostFunction패키지의 __init__.py을 사용할 것인데, 간단하게 우리가 사용할 모듈인 Definition.py를 from .import Definition을 써줌으로써 처리할 수있다.
def getType():
print("GradientDescent")
Definition.py에 getType()이라는 함수를 만들어 놓았다.
결과적으로 우리가 만든 샘플패키지에 CostFunction패키지에 Definition.py모듈을 사용하기 위해서는
from 패키지샘플 import *
print (dir()) #패키지샘플들의 하위 패키지들이 포함된 것을 확인 할 수 있다.
import 패키지샘플
print(패키지샘플.__version__) #패키지샘플의 버젼을 확인 할 수 있다.
패키지샘플.CostFunction.Definition.getType()
맨 마지막 줄처럼 사용을 하면 된다.
반응형