파이썬기초78 : 모듈(module)과 패키지(package)
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 1,920 조회
- 0 추천
- 목록
본문
#모듈과 패키지
. 모듈(module)은 파이썬 프로그램 소스파일이며, 확장자로서 .py를 사용한다.
. 패키지(package)는 모듈을 묶은 것이며, 파일시스템 상으로는 디렉토리이다.
(참고 : python2에서는 __init__.py 파일이 있는 디렉토리가 패키지이다. )
#모듈화, 패키지
'''
패키지=> /mod : 폴더 내부에는 하위 버전 호환을 위해
통상 __init__.py 파일을 생성해 둔다
모듈명=> a.py라면 a가 모듈명
모듈의 이름을 정할때는 .가 이름에 포함되면 안된다!!
(포함되면 참조할때 패키지로 인식함)
# 참조하기 -------------------------------------------------
from... import 문
. 모듈이나 패키지를 다른 모듈이나 인터프리터에서 불러오는 구문
. import문 : 모듈이나 패키지, 모듈의 객체를 불러옴
. from문으로 경로를 지정하고 import문으로 불러올 대상을 특정함.
. from문이 생략되면 현재경로를 의미함.
. from datetime import date <== datetime에서.. date를 가져와라 라는 의미임.
. from my.utils.prog import say <== my디렉토리의 utils디렉토리의 prog디렉토리내에 있는 say파일을 가져와라라는 의미임.
# from 패키지(__init__.py가 존재할때) ~
# from 모듈명 ~
# from 패키지.모듈명 ~
# from 패키지.패키지.모듈명 ~
# from (패키지명.패키지명...)(모듈명) import 변수, 함수, 클레스, 모듈명 (as 별칭)
# or
# import 패키지명(모듈명) 함수, 변수, 클레스등등 하위로 내려갈수 있다 (as 별칭)
a
│ a_sub.py
│ __init__.py
│
├─b
│ │ b_sub.py
│ │ __init__.py
a디렉토리의 __init__.py파일내용
PI1 = 3.14
a디렉토리의 a_sub.py 파일내용
PI2 = 3.142
b디렉토리의 __init__.py 파일내용
PI3 = 3.143
b디렉토리의 b_sub.py 파일내용
PI4 = 3.144
# 패키지를 지칭하면 __init__.py가 대응된다 고로 __init__.py안에 있는
# 변수, 함수, 클레스등등을 참조할수 있다
from a import PI1
print( PI1 )
# 패키지.모듈으로 타고 가서 해당 모듈의 변수, 함수, 클레스등등을 참조할수 있다
from a.a_sub import PI2
print( PI2 )
# b 패키지 밑에 있는 __init__.py가 대응된다 고로 __init__.py안에 있는
# 변수, 함수, 클레스등등을 참조할수 있다
from a.b import PI3
print( PI3 )
# 패키지.패키지.모듈으로 타고 가서 해당 모듈의 변수, 함수, 클레스등등을 참조할수 있다
from a.b.b_sub import PI4
print( PI4 )
import a.b.b_sub as m1
print( m1.PI4 )
import a.b as m2
print( m2.PI3 )
'''
# 직접실행인지 모듈로 불러들인 것인지 체크하기
if __name__ == '__main__':
print("You run module Directly")
else:
print("You import module")
# 직접만든 simpleset 모듈 import하여 사용하기위한 simpleset.py 모듈파일
# from functools import *
def intersect(*ar):
return reduce(__intersectSC,ar)
def __intersectSC(listX, listY):
setList = []
for x in listX:
if x in listY:
setList.append(x)
return setList
def difference(*ar):
setList = []
intersectSet = intersect(*ar)
unionSet = union(*ar)
for x in unionSet:
if not x in intersectSet:
setList.append(x)
return setList
def union(*ar):
setList = []
for item in ar:
for x in item:
if not x in setList:
setList.append(x)
return setList
def sspark(*):
pass
관련자료
-
이전
-
다음