모듈은 같은 특성을 갖는 클래스와 메소드(함수)와 상수를 모아놓은 하나의 파일을 말한다.
module_name.py
형태의 파일로 저장하며, 다른 파일에서는 아래와 같이 호출하여 쓸 수 있다.
import module_name # module_name 모듈을 호출한다.
import module_name as mn # module_name 모듈을 mn 이란 별명으로 호출한다.
from module_name import ClassName # module_name 모듈 안에 있는 ClassName이란 클래스를 호출한다.
from module_name import method_name # module_name 모둘 안의 method_name이란 메소드를 호출한다.
import module_name.ClassName # module_name 모듈 안의 ClassName 클래스를 호출한다.
간단한 수학 계산을 하는 my_math.py
모듈을 만들어 봤다.
# my_math.py
pi = 3.14
def avg(*items):
"""입력 값의 평균을 구하는 메소드
list()타입의 단일 파라미터를 받으면 리스트의 평균을 구함
여러 개의 int() 타입의 파라미터를 받으면 모든 파라미터의 평균을 구함"""
if type(items[0]) == list:
return sum(items[0]) / len(items[0])
else:
return sum(items) / len(items)
def get_digit(num):
"""입력 숫자의 자리수를 구하는 메소드"""
digit = 0
if num > 0:
while num != 0:
num //= 10
digit += 1
else:
digit = -1
return digit
def radian_to_degree(rad):
"""라디언을 각도로 변형하는 메소드"""
return rad * 180 / pi
def degree_to_radian(deg):
"""각도를 라디언으로 변형하는 메소드"""
return deg * pi / 180
다음은 메인 코드이다. 다음과 같이 모듈을 사용할 수 있다.
# main.py
import my_math as mm # my_math 모듈을 mm이란 별명으로 불러온다
l = [i for i in range(5, 101, 5)] # 5 ~ 101 사이의 5의 배수를 원소로 갖는 리스트 l을 만든다
print(l) # l의 내용을 출력
print(sum(l), end=' / ') # 내장 메소드 sum()을 사용하여 l의 합을 구함
print(len(l), end=' = ') # 내장 메소드 len()을 사용하여 l의 원소의 개수를 구함
print(mm.avg(l)) # my_math 모듈의 avg() 메소드를 사용하여 리스트 l의 평균을 구함
# 리스트 l의 각 원소들과 자리수를 구함
for i in l:
print(" " * (3 - mm.get_digit(i)) + str(i) + " : " + str(mm.get_digit(i)) + "자리")
print("1 rad = " + str(mm.radian_to_degree(1))) # 1라디안이 몇도인지 구함
print("1 deg = " + str(mm.degree_to_radian(1))) # 1도가 몇 라디안인지 구함
main을 실행하면 다음과 같은 결과를 얻을 수 있습니다.