본문 바로가기

Python

파이썬 모듈과 패키지(Python3.X module and Package)


파이썬 모듈과 패키지

(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()

맨 마지막 줄처럼 사용을 하면 된다.