모듈 & 패키지
1. 모듈(Module)
파일 단위의 코드 재사용
- 모듈(Module)
- 패키지(Package)
- 라이브러리(Library)
용어 | 정의 |
---|---|
모듈 | 특정 기능을 .py 파일 단위로 작성한 것. |
패키지 | 특정 기능과 관련된 여러 모듈들의 집합. 패키지 안에는 또다른 서브 패키지를 포함 할수도 있음. |
파이썬 표준 라이브러리 | 파이썬에 기본적으로 설치된 모듈과 내장 함수를 묶어서 파이썬 표준 라이브러리 (Python Standard Library, PSL) 라 불림. |
패키지 관리자(pip) | PyPI 에 저장된 외부 패키지들을 설치하도록 도와주는 패키지. |
1.1 모듈(Module)?
모듈(module)은 특정 기능을 하는 코드를 담고 있는 파일(또는 스크립트)입니다.
1.2 모듈 생성
- jupyter notebook 파일트리화면에서 New > Text File
- 파일의 이름을
check.py
로 저장
# 빈번히 활용되는 짝수 홀수 판별식을 작성해봅시다.
# check.py
def odd(n):
return bool(n % 2)
def even(n):
return not bool(n % 2)
1.3 모듈 활용
import
- 모듈을 활용하기 위해서는 반드시
import
문을 통해 내장 모듈을 이름 공간으로 가져와야합니다.
# import를 이용하여 check.py를 가져옵니다.
import check
# 우리가 만든 odd, even 함수를 확인할 수 있습니다.
print(dir(check))
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'even', 'odd']
# 함수를 활용해봅시다.
print(check.odd(10)) # False
print(check.even(10)) # True
# 함수를 자주 사용할거라면, 변수에 할당해서 사용할 수도 있습니다.
check_odd = check.oddcheck_odd(10) # False
map(check_odd, list(filter(check_odd, range(1, 11)))
# [1, 3, 5, 7, 9]
2. 패키지(Package)
패키지(pakcage)는 점(.
)으로 구분된 모듈 이름(package.module
) 을 써서 모듈을 구조화하는 방법입니다.
2.1 패키지 생성
- jupyter notebook 파일트리화면에서 New > Folder
- 다음과 같은 폴더구조 생성
my_package/
__init__.py
math/
__init__.py
tools.py
모듈 이름 my_package.math는 my_package라는 이름의 패키지에 있는 math라는 이름의 하위 패키지를 가리킵니다.
__init__.py
? > python3.3 버전부터는__init__.py
파일이 없어도 패키지로 인식합니다(PEP 420). 하지만 하위 버전 호환 및 일부 프레임워크에서의 올바른 동작을 위해__init__.py
파일을 생성하는 것이 권장됩니다.
# my_package/__init__.py
# 모든 __init__.py 파일은 비워둡니다.
# my_package/math/__init__.py
# 모든 __init__.py 파일은 비워둡니다.
my_package/math/tools.py
pi = 3.14159265358979323846
e = 2.71828182845904523536def
my_max(a, b):
if a > b:
return a
else:
return b
- [연습] 패키지 만들기
my_package 패키지 내부에 statistics 패키지를 만들고, tools.py 모듈 생성 후, 아래의 표준편차 함수 standard_deviation()를 추가해보세요.
- [폴더구조]
my_package/
__init__.py
math/
__init__.py
tools.py
statistics/
__init__.py
tools.py
standard_deviation()
함수
def standard_deviation(values):
mean = sum(values) / len(values)
sum_var = sum(pow(value - mean, 2)
for value in values) / len(values)
std_dev = math.sqrt(sum_var)
return std_dev
2.2 패키지 활용
- 모듈과 동일하게
from
과import
키워드를 통해 코드를 가져와(import) 활용한다.
(1) from
패키지 import
모듈
import
는 from
과 함께 다양한 방법으로 활용할 수 있습니다.
# math 패키지의 tools 모듈을 추가해봅시다.
# math 패키지의 tools 모듈을 추가해봅시다.
from my_package.math import tools
print(tools.e) # 2.718281828459045
print(tools.pi) # 3.141592653589793
(2) from
패키지.모듈 import
데이터
특정한 함수 혹은 어트리뷰트만 활용하고 싶을 때, 아래와 같이 작성합니다.
# 특정한 데이터 혹은 함수만 활용하고 싶을 때, 아래와 같이 작성합니다. 모듈 내부의 자연상수 e를 간단하게 출력해봅시다
from my_package.math.tools import e
print(e) # 2.718281828459045
(3) from
모듈 import
*
해당하는 모듈 내의 모든 변수, 함수, 클래스를 가져옵니다.
# math 패키지내부의 tools 모듈에서 모든 변수와 함수를 가져와봅시다.
from my_package.math.tools import *
print(pi) # 3.141592653589793
print(my_max(5, 2)) # 5
(4) from
모듈 import
데이터 as
별명
내가 지정하는 이름을 붙여 가져올 수 있습니다.
# statistics 패키지 tools 모듈에 정의한 standard_deviation 함수를 짧은 이름(sd)으로 줄여 활용해봅시다.
from my_package.statistics.tools import standard_deviation as sd
sd([1,2,3,4,5]) # 1.4142135623730951
<정리>
- 모듈
import modulefrom module import var, function, Classfrom module import *
- 패키지
from package import modulefrom package.module import var, function, Class
'Python' 카테고리의 다른 글
Python_07_OOP (0) | 2021.04.13 |
---|---|
Python_05_데이터_구조 (0) | 2021.04.07 |
Python_04_예외처리 (0) | 2021.04.06 |
Python_03_함수 (0) | 2021.04.05 |
Python_02_제어문 (0) | 2021.04.04 |