모듈(Module) — 만들어둔 기능을 가져와 쓰기
지금까지는 필요한 기능을 전부 직접 함수로 만들었습니다. 이번에는 파이썬이 이미 만들어둔 기능을 import 한 줄로 가져와 쓰는 법을 배웁니다.
무작위 숫자를 뽑는 random,
제곱근·올림·내림 같은 계산을 맡는 math,
오늘 날짜와 시각을 알려주는 datetime까지
— 자주 쓰는 표준 모듈 세 가지를 한 번에 정리해볼게요.
요즘은 고등학교에서도 코딩을 정규 과목으로 가르치는 시대입니다. 전공자가 아니어도 바이브 코딩(Vibe Coding)이나 생성형 AI(Generative AI)를 활용하면 누구나 그럴듯한 코드 결과물을 만들어낼 수 있게 되었죠.
개발 언어를 접하는, 전공자가 아닌 일반인 입문자가 많아진 것입니다.
이 시리즈는 글쓴이가 실제로 일반인, 고등학생 등 비전공자·입문자에게 파이썬을 가르치면서 정리한 내용들을 교재 형식으로 엮은 글입니다.최대한 쉽고 친절하게 설명하면서도, 컴퓨터와 프로그래밍 언어에 대한 기초 이론까지 함께 짚고 넘어가려 합니다.
고등학생, 비전공자, 완전 입문자도 따라올 수 있게끔 만든 시리즈이고, 실제 과외 수업 자료를 바탕으로 만들어서 학교 시험처럼 개념 확인 문제도 그대로 들어있어요.
중간중간 빈칸 채우기랑 학교 시험 유형 문제가 나오는데, 정답은 바로 안 보이게 접어뒀습니다. 먼저 스스로 생각해본 다음 "보기"를 눌러서 확인해보세요.

지금까지는 필요한 기능이 있으면 우리가 직접 함수로 만들었습니다.
print("안녕하세요.")
그런데 파이썬에는 이미 많은 함수들이 만들어져 있습니다. 이렇게 다른 사람(또는 파이썬 자체)이 미리 만들어둔 기능을 모듈(Module)이라고 해요. 사실 지금까지 계속 써온 print(), input(), len(), range()도 우리가 만든 게 아니라 파이썬이 기본으로 제공하는 기능이에요.
모듈을 가져올 때는 import 모듈이름을 씁니다.
num = random.randint(1, 10)
print(num)
import random로 random 모듈을 가져오면, random.randint(1, 10)처럼 모듈이름.함수이름() 형태로 사용합니다. randint(1, 10)은 1 이상 10 이하의 정수 중 하나를 무작위로 뽑아줍니다. 실행할 때마다 결과가 달라져요 — 위 7은 그냥 한 번 실행했을 때 나온 예시일 뿐이에요.
random.randint(1, 10)은 1도, 10도 모두 나올 수 있는 범위예요. "10은 포함 안 되겠지"라고 착각하기 쉬운데, 양쪽 끝 숫자 모두 포함됩니다.
지금까지는 import random처럼 모듈 전체를 가져와서 random.randint()처럼 썼습니다. 그런데 from 모듈이름 import 함수이름을 쓰면 모듈 안에서 필요한 함수만 콕 집어서 가져올 수 있어요. 이렇게 가져오면 모듈이름을 앞에 붙이지 않고 함수 이름만으로 바로 쓸 수 있습니다.
print(math.pow(2, 3))
print(math.ceil(3.2))
↓ 이걸 from ~ import ~ 방식으로 바꾸면
print(pow(2, 3))
print(ceil(3.2))
둘 다 똑같이 동작해요. math.pow()처럼 쓰면 어디서 온 함수인지 이름만 봐도 알 수 있는 것이 장점이고, pow()처럼 쓰면 매번 모듈 이름을 안 써도 되는 것이 장점이에요. 입문 단계에서는 import 모듈이름 방식을 기본으로 쓰고, 자주 쓰는 함수 한두 개만 짧게 쓰고 싶을 때 from ~ import ~를 쓴다고 생각하면 충분해요.
for i in range(5):
print(random.randint(1, 6))
import는 딱 한 번만 작성하면, 그 아래 코드 어디서든 random.randint()를 계속 사용할 수 있어요. 실행할 때마다 다른 숫자 5개가 나옵니다.
# 주사위 만들기
dice = random.randint(1, 6)
print("주사위 :", dice)
# 동전 던지기
coin = random.randint(0, 1)
if coin == 0:
print("앞면")
else:
print("뒷면")
# 가위바위보 컴퓨터
computer = random.randint(1, 3)
if computer == 1:
print("가위")
elif computer == 2:
print("바위")
else:
print("보")
- import를 안 함 —
import random없이 바로random.randint()를 쓰면 오류가 납니다. random이라는 이름 자체를 파이썬이 모르기 때문이에요. - range 착각 —
random.randint(1, 10)에서 10이 포함 안 된다고 착각하는 경우가 많아요. 10도 포함됩니다. - 모듈 이름만 출력 —
print(random)은 난수가 아니라 모듈 정보만 출력돼요. 난수를 얻으려면random.randint()처럼 함수를 호출해야 합니다.
answer = random.randint(1, 10)
while True:
num = int(input("숫자 입력 : "))
if num == answer:
print("정답입니다.")
break
elif num < answer:
print("더 큰 숫자입니다.")
else:
print("더 작은 숫자입니다.")
random으로 정답을 미리 뽑아두고, while True로 계속 입력을 받다가 맞히면 break로 반복문을 빠져나옵니다. random·while·if를 조합하면 이렇게 간단한 게임도 만들 수 있어요.
- 모듈을 가져오는 키워드는 무엇인가요?
- 1~100 사이의 난수를 만들려면
random.randint(, )처럼 써야 합니다.
정답
2. random.randint(1, 100)
- 다음 코드에서 나올 수 있는 숫자를 모두 쓰시오.
import random
print(random.randint(3, 7)) - 다음 코드를 3번 실행하면 매번 같은 결과가 나올지, 다른 결과가 나올지 이유와 함께 서술하시오.
import random
for i in range(3):
print(random.randint(1, 2))
정답
2. 매번 다른 결과가 나옵니다. random.randint()는 실행할 때마다 무작위로 값을 뽑기 때문에, 같은 코드라도 실행 시점마다 다른 숫자 조합이 출력됩니다.
지금까지는 + - * /처럼 간단한 계산만 했습니다. 하지만 제곱근, 원주율, 거듭제곱, 올림, 내림 같은 계산도 자주 필요해요. 이런 기능을 제공하는 모듈이 math 모듈입니다.
기본 계산기는 + - × ÷만 있죠. 공학용 계산기는 √ π 제곱 삼각함수 같은 기능이 더 있고요. 파이썬의 math 모듈은 이 공학용 계산기와 비슷한 역할을 합니다.
print(math.pi)
math.pi는 함수가 아니라 원주율 값을 담고 있는 변수예요. 그래서 괄호 없이 math.pi라고만 씁니다.
print(math.sqrt(25))
print(math.pow(2, 3))
math.ceil(3.2) → 4
소수점이 있으면 무조건 위로 올림
math.floor(3.9) → 3
소수점이 있으면 무조건 아래로 내림
print(math.ceil(3.2))
print(math.floor(3.9))
절댓값은 abs(-10)처럼 사용할 수 있어요. 그런데 abs()는 파이썬 기본 함수라서 import 없이 바로 쓸 수 있고, ceil()·floor()·sqrt()는 math 모듈 안에 있는 함수라서 import math가 필요하다는 점을 함께 기억해두면 좋아요.
r = 5
area = math.pi * r * r
print(area)
원의 넓이 공식(반지름 × 반지름 × π)을 그대로 코드로 옮긴 거예요. π 값을 외우거나 3.14로 근사할 필요 없이 math.pi로 정확한 값을 씁니다.
a = 3
b = 4
c = math.sqrt(a*a + b*b)
print(c)
피타고라스 정리(a² + b² = c²)를 그대로 옮겼어요. a*a + b*b로 양변의 제곱 합을 구하고, math.sqrt()로 제곱근을 씌워서 빗변 c를 구합니다.
- import를 안 함 —
import math없이math.pi를 쓰면 오류가 납니다. - sqrt와 pow 혼동 —
math.sqrt(9)는 √9(제곱근),math.pow(2, 5)는 2⁵(거듭제곱)이에요. 이름이 비슷해서 헷갈리기 쉬워요. - ceil과 floor를 반대로 기억 —
math.ceil(3.2)는 올림이라 4가 되고,math.floor(3.8)은 내림이라 3이 됩니다.
r = float(input("반지름 입력 : "))
area = math.pi * r * r
print("원의 넓이 :", area)
사용자에게 반지름을 입력받아 float()로 실수로 바꾼 뒤, math.pi를 이용해 넓이를 계산합니다. random 모듈처럼 math 모듈도 import 한 번으로 여러 함수를 계속 가져다 쓸 수 있어요.
- 원주율을 저장한 값은
math.입니다. - 25의 제곱근을 구하는 코드는
math.(25)입니다. - 4.8을 올림하는 코드는
math.(4.8)입니다.
정답
2. sqrt
3. ceil
- 다음 코드의 실행 결과를 작성하시오.
import math
print(math.floor(9.8)) math.ceil()과math.floor()의 차이를 한 문장으로 서술하시오.
정답
2. ceil()은 소수점이 있으면 무조건 위로 올림하고, floor()는 소수점이 있으면 무조건 아래로 내림합니다.
컴퓨터는 현재 날짜와 시간을 알고 있습니다. 파이썬에서는 datetime 모듈로 이 정보를 가져다 쓸 수 있어요.
휴대폰을 보면 "2026년 9월 4일 오전 11시 57분"처럼 날짜와 시간이 표시되죠. 파이썬도 똑같이 현재 시간을 알 수 있습니다.
now = datetime.datetime.now()
print(now)
(실행할 때마다 달라집니다.)
많은 학생들이 datetime.now()라고만 씁니다. 그런데 정확히는 datetime 모듈 안에 있는 datetime이라는 도구를 사용하는 것이라서, datetime.datetime.now()처럼 두 번 써야 해요. 지금은 "이렇게 쓰는 문법이구나" 정도로만 이해해도 충분합니다. 자세한 이유는 나중에 클래스를 배우면 자연스럽게 이해가 돼요.
now = datetime.datetime.now()
print(now.year)
print(now.month)
print(now.day)
now 안에는 연·월·일·시·분·초가 전부 들어있어서, now.year·now.month·now.day처럼 필요한 부분만 꺼내 쓸 수 있어요. 시·분·초도 now.hour·now.minute·now.second로 똑같이 꺼낼 수 있습니다.
now = datetime.datetime.now()
print(now.year, "년",
now.month, "월",
now.day, "일")
now = datetime.datetime.now()
if now.hour < 12:
print("좋은 아침입니다.")
elif now.hour < 18:
print("좋은 오후입니다.")
else:
print("좋은 저녁입니다.")
now.hour로 현재 시(0~23)를 꺼내서 if·elif·else로 나눠 판단합니다. 지난 챕터에서 배운 조건문이 datetime과 만나면 "지금 몇 시인지에 따라 다르게 동작하는 코드"를 만들 수 있어요.
- datetime.now()만 씀 — 반드시
datetime.datetime.now()처럼 두 번 써야 해요. - now를 만들지 않고 바로 사용 —
now = datetime.datetime.now()가 먼저 있어야now.year같은 코드가 동작합니다.
while True:
now = datetime.datetime.now()
print(now.hour, ":", now.minute, ":", now.second)
참고로 이 코드는 너무 빠르게 반복되어 화면이 시·분·초를 계속 쏟아내듯 출력됩니다. 나중에 time 모듈을 배우면 1초마다 한 번씩 출력되도록 개선할 수 있어요.
- 현재 날짜와 시간을 가져오는 코드는
datetime.datetime.()입니다. now에서 현재 연도만 꺼내려면now.를 씁니다.
정답
2. year
- 다음 코드에서
datetime.datetime.now()를 쓰지 않고datetime.now()라고만 쓰면 어떤 문제가 생기는지 서술하시오. - 다음 코드가 하는 일을 한 문장으로 서술하시오.
if now.hour < 12:
print("좋은 아침입니다.")
정답
2. 현재 시각의 시(hour)가 12시 미만이면, 즉 오전이면 "좋은 아침입니다."를 출력합니다.
'Language > Python' 카테고리의 다른 글
| [고등학생부터, 파이썬] 18. 파일 입출력 (1) | 2026.09.04 |
|---|---|
| [고등학생부터, 파이썬] 16. 함수 종합 프로젝트 (0) | 2026.09.01 |
| [고등학생부터, 파이썬] 15. 지역변수와 전역변수 (0) | 2026.08.28 |
| [고등학생부터, 파이썬] 14. 함수(Function) (0) | 2026.08.20 |
| [고등학생부터, 파이썬] 13. 자료구조 총정리 (0) | 2026.08.20 |
댓글