06. 모듈¶
파일 단위의 코드 재사용
모듈(Module)
패키지(Package)
용어 |
정의 |
---|---|
모듈 |
특정 기능을 |
패키지 |
특정 기능과 관련된 여러 모듈들의 집합. 패키지 안에는 또다른 서브 패키지를 포함 할수도 있음. |
파이썬 표준 라이브러리 |
파이썬에 기본적으로 설치된 모듈과 내장 함수를 묶어서 파이썬 표준 라이브러리 (Python Standard Library, PSL) 라 불림. |
패키지 관리자( |
|
6.1 모듈 (Module)¶
모듈(module)은 특정 기능을 하는 코드를 담고 있는 파일(또는 스크립트)입니다.
6.1.1 모듈 생성¶
jupyter notebook 파일트리화면에서 New > Text File
파일의 이름을
check.py
로 저장
# 빈번히 활용되는 짝수 홀수 판별식을 작성해봅시다.
# check.py
def is_odd(n):
return bool(n % 2)
def is_even(n):
return not bool(n % 2)
6.1.2 모듈 활용¶
import
¶
모듈을 활용하기 위해서는 반드시
import
문을 통해 내장 모듈을 이름 공간으로 가져와야합니다.
# import를 이용하여 check.py를 가져옵니다.
import check
print(check)
<module 'check' from 'C:\\Users\\User\\jupyter-book\\python\\docs\\check.py'>
# 우리가 만든 odd, even 함수를 확인할 수 있습니다.
print(dir(check))
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'is_even', 'is_odd']
# 함수를 활용해봅시다.
check.is_odd(10)
check.is_even(10)
True
6.2 패키지(Package)¶
패키지(pakcage)는 점(.
)으로 구분된 모듈 이름(package.module
) 을 써서 모듈을 구조화하는 방법입니다.
6.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.71828182845904523536
def 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()
함수¶
import math
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
6.2.2 패키지 활용¶
모듈과 동일하게
from
과import
키워드를 통해 코드를 가져와(import) 활용합니다.
from
패키지 import
모듈¶
import
는 from
과 함께 다양한 방법으로 활용할 수 있습니다.
# math 패키지의 tools 모듈을 추가해봅시다.
from my_package.math import tools
print(tools.e)
2.718281828459045
from
패키지.모듈 import
데이터¶
특정한 함수 혹은 어트리뷰트만 활용하고 싶을 때, 아래와 같이 작성합니다.
# 특정한 데이터 혹은 함수만 활용하고 싶을 때, 아래와 같이 작성합니다. 모듈 내부의 자연 상수 e를 간단하게 출력해봅시다.
from my_package.math.tools import e
print(e)
2.718281828459045
from
모듈 import
*
¶
해당하는 모듈 내의 모든 변수, 함수, 클래스를 가져옵니다.
# math 패키지내부의 tools 모듈에서 모든 변수와 함수를 가져와봅시다.
from my_package.math.tools import *
print(pi)
print(my_max(5, 2))
3.141592653589793
5
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