목차
모듈(module)이란 변수나 함수 클래스들을 하나로 모아둔 파일을 의미합니다. 파이썬에서 모듈은 파이썬에서 제공하는 표준모듈, 사용자가 따로 정의한 사용자 모듈, 외부에서 받아서 사용하는 외부 모듈이 있습니다.
모듈을 사용하기 위해서는 import 라는 예약어를 사용해야 합니다.
import 파일 명
표준 모듈: 파이썬에서 제공하는 모듈입니다. 별도의 설치가 필요 없습니다.
math는 이름에서도 알 수 있듯이 수학에 관련된 함수를 제공합니다.
예)
1. ceil : 올림
2. floor: 내림
import math
# ceil(올림) 사용법
print(f'1.1의 올림 값은 {math.ceil(1.1)}이다')
# floor(내림) 사용법
print(f'1.9의 내림 값은 {math.floor(1.9)}이다')
출력 결과
1.1의 올림 값은 2이다
1.9의 내림 값은 1이다
예)
3. trunc: 절삭(잘라 버린다.)
import math
print(f'1.9의 절삭 값은 {math.trunc(1.9)}이다.')
출력 결과:
1.9의 절삭 값은 1이다.
예)
4. pow : 거듭제곱(실수로 반환된다.)
import math
print(f'2의 4제곱은 {math.pow(2, 4)}이다.')
출력 결과:
2의 8제곱은 16.0이다.
예)
5. sqrt : 제곱 근(실수로 반환된다.)
print(f'16의 제곱 근은 {math.sqrt(16)}이다.')
출력 결과:
16의 제곱 근은 4.0이다.
random 모듈은 난수를 생성합니다.(Random Number)
예)
1. 실수형 난수 : 0.0<= random < 1.0
import random
# 5개의 난수를 출력해서 확인해 보자.
for i in range(0, 5):
print(random.random())
출력 결과:
0.6578770063006901
0.6607984496648313
0.9885992584862267
0.0921608031718486
0.02209035468737819
random 모듈은 모든 출력 결과가 다릅니다.
예)
2. 정수형 난수 : 법위 지정 가능
import random
# 1 <= random < 10까지 5개의 난수를 출력해서 확인해 보자.
for i in range(0, 5):
print(random.randint(1, 10))
출력 결과:
6
4
8
1
5
사용자 모듈은 사용자가 직접 모듈을 만들어 사용하는 것을 의미합니다.
사용자 모듈도 파이썬에서 제공하는 모듈과 똑같이 import 를 사용해서 모듈을 사용합니다.
예제) 소수점 자리 올림
import math
# 소수 1자리 올림
# target : 1.111
# goal : 1.2
# 과정:
# 1) 1.111 * 10 = 11.11
# 2) math.ceil(11.11) = 12
# 3) 12 / 10 = 1.2
# 소수 2자리 올림
# target : 1.111
# goal : 1.12
# 과정:
# 1) 1.111 * 100 = 111.1
# 2) math.ceil(111.1) : 112
# 3) 112 / 100 : 1.12
# 소수 n 자리 올림
# math.ceil(target * 10의 n 제곱) / 10의 n 제곱
def ceil(target, n):
return math.ceil(target * (10 ** n)) / (10 ** n)
def floor(target, n):
return math.floor(target * (10 ** n)) / (10 ** n)
import MyModule as my
number = 1.111
# 자리 올림
print(my.ceil(number, 2))
print(my.ceil(number, 1))
print(my.ceil(number, 0))
# 자리 내림
print(my.floor(number, 2))
print(my.floor(number, 1))
print(my.floor(number, 0))
출력 결과:
1.12
1.2
2.0
1.11
1.1
1.0
as 구문을 사용하면 사용자가 따로 정의한 이름으로 모듈을 사용할 수 있습니다.
이상으로 파이썬 모듈에 대해 알아봤습니다. 잘못된 부분이나 부족한 부분 있다면 피드백 감사하겠습니다!!!