[요약] 파이썬(Python) - 모듈과 패키지 개념 이해
모듈 : 하나의 파이썬 파일 단위로 인식하면 됨
패키지 : 모듈들의 묶음으로 디렉토리 개념으로 인식
패키지를 지정하기 위한 디렉토리 구분자중
.. : 부모디디렉토리
. : 현재 디렉토리
예제를 위한 파일선 모듈 생성
1. fibonacci.py : 피보나치 수열을 계산하는 클래스 작성 모듈
2. calc1.py : 사칙연산을 위한 함수 모음 모듈
3. prints.py : 출력 테스트를 위한 함수 모듈
생성된 모듈 파일들을 ./pkg 디렉토리에 모두 저장(pkg 패키지라 명명)
mkdir pkg
* 각 모듈에 대한 테스트를 위해 모듈 최 하단에 다음 문구 아래 테스트 코드를 넣을 수 있다.
if __name__ == "__main__": # 이 파일을 직접 실행할 경우에만 (import가 아닌) 다음 명령이 실행됨. print('단위모듈 테스트')
파이썬 모듈 import의 특징
DLL처럼 사용할 클래스 / 함수 선택적인 import가 가능하다.
from pkg.fibonacci import * # 모듈내 클래스 또는 함수 모두 사용
from pkg.fibonacci import Fibonacci # 모듈내 지정된 클래스만을 사용
from pkg.calc1 import div as d # 모듈의 div 함수만 d로 별칭(Alias)로 import 시킨다
모듈파일 생성
1. fibonacci.py : 피보나치 수열을 계산하는 클래스 작성 모듈
class Fibonacci: def __init__(self, title="fibonacci"): self.title = title def fib(n): a, b = 0, 1 while a < n: print(a, end=' ') a,b = b, a+b print() def fib2(n): result = [] a, b = 0, 1 while a < n : result.append(a) a,b = b, a+b return result
2. calc1.py : 사칙연산을 위한 함수 모음 모듈
def add(l, r): return l + r def mul(l, r): return l * r def div(l, r): return l / r
3. prints.py : 출력 테스트를 위한 함수 모듈
def print1() : print("I'm Niceday!'") def print2() : print("I'm GoodDay") # 단위테스트를 위한 방법 # 독립적으로 파일 실행 if __name__ == "__main__": # 이 파일을 직접 실행할 경우에만 (import가 아닌) 다음 명령이 실행됨. print('단위모듈 테스트')
패키지를 호출할 메인 프로그램 모듈
moduletest.py
# 파이썬 모듈과 패키지의 개념 # 패키지 예제 # 상대경로 # .. : 부모디렉토리 # . : 현재경로 # 예1) from pkg.fibonacci import Fibonacci # 모듈내 지정된 클래스만을 사용 Fibonacci.fib(300) # 0 1 1 2 3 5 8 13 21 34 55 89 144 233 print('ex1 : ', Fibonacci.fib2(400)) # ex1 : [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377] print('ex1 : ', Fibonacci().title) # ex1 : fibonacci # 예2) - 비사용 권장 from pkg.fibonacci import * # 모듈내 모든 클래스 사용 가능 Fibonacci.fib(500) # 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 print('ex2 : ', Fibonacci.fib2(600))# ex1 : [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377] print('ex2 : ', Fibonacci().title) # ex1 : fibonacci # 예3) Alias 사용 - 권장 from pkg.fibonacci import Fibonacci as fb fb.fib(1000) # 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 print('ex3 : ', fb.fib2(1200))# ex1 : [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377] print('ex3 : ', fb().title) # ex1 : fibonacci # 예4) - 함수사용 import pkg.calc1 as c print('ex4 : ', c.add(10, 100)) # 110 print('ex4 : ', c.mul(10, 100)) # 1000 # 예5) from pkg.calc1 import div as d # 모듈의 div 함수만 d로 별칭으로 import 시킨다 print('ex5 : ', int(d(100, 10))) # 10 # 예6) import pkg.prints as P import builtins # 기본 패키지는 import하지 않아도 자동으로 import됨 # 특정 디렉토리를 패키지로 인식시키기 위하여 __init__.py 빈 파일을 만들어야 함(파이선 2.0 하위호환) # 현재 버전에서는 __init__.py 파일이 없어도 관계 없다.
'프로그래밍 > Python' 카테고리의 다른 글
[요약] 파이썬(Python) - 예외처리(Exception) (0) | 2020.12.02 |
---|---|
[요약] 파이썬(Python) - 파일 읽기 / 쓰기 (0) | 2020.11.30 |
[요약] 파이썬(Python) - 클래스(Class) 사용법 (0) | 2020.11.23 |
[요약] 파이썬(Python) - 함수와 람다 사용법 (0) | 2020.11.13 |
[요약] 파이썬(Python) - 실용코드 - 반복/제어문 (0) | 2020.11.05 |