모듈은 여러 코드를 묶어 다른 곳에서 재사용할 수 있는 코드 모음을 말한다.
모듈에는 보통 비슷한 기능을 하는 함수나 큰 기능을 수행하는 데 필요한
일련의 함수와 데이터가 포함된다.
사용방법
먼저 import 를 사용하여 파일 전체를 읽어올 수 있다.
import <모듈>
여기서 모듈 이름은 파이썬 파일의 이름이다.
lib.ph
class A:
def a(self):
return 'a'
|
test.ph
import lib
obj = lib.A()
print(obj.a())
|
lib.A() 처럼 쓰기 보다는 그냥 A() 처럼 현재 파일에 포함된 것처럼 쓰고 싶다면 아래 방법을 사용한다.
from <모듈> import <대상클래스 또는 함수명>
from <모듈> import *
test.ph
from lib import A
obj = A()
print (obj.a())
|
모듈의 경로
파이썬의 모듈은 파일기준으로 일어나기 때문에 파일의 위치가 중요하다.
보통 아래 3개중 하나의 위치에 모듈로 사용할 파이썬 파일을 위치시키면 된다.
-
현재 작업 디렉터리
-
PYTHONPATH 환경변수에 등록된 위치
-
파이썬 표준 라이브러리 디렉토리 ( 파이썬 설치시 셋팅됨 )
표준 라이브러리 디렉토리 경로는 아래의 방법으로 할 수 있다.
import sys
print (sys.path)
['H:\\Project\\Java\\MyPython1\\myphtyhon\\test\\example1',
'H:\\Project\\Java\\MyPython1', 'C:\\Phython35\\DLLs', ...]
|
이 경로는 추가 / 삭제가 실행중에 가능하다.
import sys
sys.path .append("C:\\")
print(sys.path)
|
모듈 임포트 내부동작
1. sys.path 등 검색 디렉토리에서 모듈 찾기
2. 모듈의 바이트 코드가 있으면 이를 바로 임포트
3. 없으면 인터프리터를 이용해 해당 모듈 코들를 바이트 코드로 만든후 임포트
바이트 코드 (.pyc) 는 인터프리팅 된 object 파일 정도로 보면 되는데 메모리에 즉시 로딩할 수 있는 데이터다.
모듈 리로드
IDE 의 종료 등으로 인해 현재 인터프리터가 종료되지 않는 한
기존의 바이트 코드를 그대로 이용하기 때문에 현재 코드에 곧 바로 반영되지 않게 된다.
이때 사용할 수 있는 것이 imp 모듈의 reload 라는 함수다.
이 함수를 사용하면 사용 시점에 다시 해당 모듈을
항상 다시 인터프리팅 하여 항상 최신의 결과를 얻을 수 있다.
import lib
import imp
imp.reload (lib)
obj = lib.A()
print(obj.a())
|
__name__ 어트리뷰트
모듈을 임포트해서 사용하는 경우와 그렇지 않은 경우 ( 직접 모듈 개발 중인 경우 ) 를 구분하면
테스트 코드 등을 넣을 때 유용하다.
이때 사용하는 어트리뷰트가 __name__ 이며 이 것이 직접 사용중일때 모듈 명은 '__main__' 이다.
즉 모듈의 코드가 메인으로 실행됐다는 뜻이다.
lib.ph
class A:
def a(self):
return 'a'
#test code 를 넣는다.
if __name__ == '__main__' :
print("this is test code")
Output
this is test Code
|
test.ph
import lib
obj = lib.A()
print(obj.a())
Output
a
|
'Script > Python' 카테고리의 다른 글
18. Package (0) | 2020.01.15 |
---|---|
16. Class (0) | 2020.01.15 |
15. Generic Operation With Containers (0) | 2020.01.15 |
14. Documentation (0) | 2020.01.15 |
13. pass (0) | 2020.01.15 |