파이썬이 미리 만들어 둔 도구 상자(표준 라이브러리)를 가져올 때는 import 모듈이름 또는 **from 모듈이름 import 이름**을 씁니다.
print(), len(), int()처럼 늘 바로 쓸 수 있는 내장 함수도 있지만, 제곱근 계산이나 주사위 굴리기, 오늘 날짜 다루기까지 모두 처음부터 꺼내 두면 이름표가 너무 복잡해집니다. 그래서 파이썬은 이런 기능들을 math, random, datetime 같은 **모듈(도구 상자)**에 나누어 담아 두고, 필요한 상자만 import로 가져다 쓰게 합니다.
1가져오는 두 가지 방법 — import와 from ... import
모듈을 가져오는 방법은 상자 통째로 가져오느냐, 상자 안의 도구만 꺼내 오느냐 두 가지입니다.
import math
print(math.sqrt(16))
print(math.ceil(3.2))
4.0
4import math: 내 프로그램에math라는 상자 이름을 붙입니다. 안에 든 함수를 쓸 때는math.sqrt(16)(제곱근),math.ceil(3.2)(올림)처럼 마침표(.)로 꺼내 부릅니다.
반대로 자주 쓰는 함수 몇 개만 상자에서 직접 꺼내 오려면 from 모듈 import 이름을 씁니다. 무엇이 찍힐지 먼저 맞혀 보세요.
from math import sqrt, ceil
print(sqrt(25))
print(ceil(4.1))
실행 결과 보기
5.0
5예상과 다르면 그곳이 배울 곳입니다. from math import sqrt, ceil은 내 이름표에 sqrt와 ceil을 바로 붙여 주므로 앞에 math.를 붙이지 않고 부릅니다.
| 가져오는 문장 | 내 이름표에 생기는 이름 | 부르는 모양 |
|---|---|---|
import math | math | math.sqrt(16) |
from math import sqrt | sqrt | sqrt(16) |
2자주 쓰는 표준 라이브러리 — math · random · datetime
파이썬을 설치하면 함께 들어 있는 대표적인 표준 라이브러리 세 가지입니다.
math: 수학 계산 도구입니다.math.sqrt(x)(제곱근),math.ceil(x)(올림),math.floor(x)(내림), 원주율 상수math.pi가 들어 있습니다.random: 무작위 뽑기 도구입니다.random.randint(a, b)는a부터b까지(b포함!) 정수 하나를 뽑고,random.choice(리스트)는 리스트에서 항목 하나를 뽑습니다.datetime: 날짜와 시각 도구입니다.from datetime import date로 가져와date(2026, 10, 20)처럼 날짜를 다룹니다.
import random
random.seed(0)
a = ['가위', '바위', '보']
print(random.randint(1, 6))
print(random.choice(a))
4
바위(위 코드의 random.seed(0)은 실행할 때마다 같은 무작위 순서가 나오도록 씨앗 값을 고정한 줄입니다. 실제로 주사위를 굴릴 때는 seed 줄 없이 random.randint(1, 6)만 씁니다.)
주의할 점은 range(1, 6)이 끝 수 6을 포함하지 않는 것과 달리, random.randint(1, 6)은 양끝 수 1과 6을 모두 포함한다는 점입니다.
예제
날짜 만들어 연·월·일 꺼내기
datetime 모듈에서 date를 가져오면 날짜를 만들고 .year, .month, .day로 연·월·일을 꺼낼 수 있습니다.
from datetime import date
d = date(2026, 10, 20)
print(d)
print(d.year, d.month, d.day)
2026-10-20
2026 10 20자주 틀리는 곳
1. import math만 하고 math. 없이 함수를 부른다
틀린 생각: import math를 적었으니 sqrt(16)이라고 바로 불러도 파이썬이 알아서 math 안에서 찾아 준다.
import math는 내 이름표에 math라는 상자 이름 하나만 붙여 줄 뿐, 그 안의 sqrt를 바깥 이름표로 꺼내 놓지 않습니다.
import math
print(sqrt(16))
Traceback (most recent call last): File "main.py", line 3, in <module> print(sqrt(16)) ^^^^NameError: name 'sqrt' is not defined맞는 규칙: import math로 가져왔으면 math.sqrt(16)으로 부르고, sqrt(16)으로 바로 부르려면 from math import sqrt로 가져옵니다.
2. from math import sqrt를 쓰고 math.sqrt()로 부른다
틀린 생각: from math import sqrt도 math에서 가져온 것이니 math.sqrt(16)으로 불러도 된다.
from math import sqrt는 sqrt라는 이름만 가져오고 math라는 상자 이름은 붙이지 않습니다.
from math import sqrt
print(math.sqrt(16))
Traceback (most recent call last): File "main.py", line 3, in <module> print(math.sqrt(16)) ^^^^NameError: name 'math' is not defined. Did you forget to import 'math'?내 이름표에는 sqrt만 있고 math는 없어 NameError가 납니다.
맞는 규칙: from math import sqrt로 가져왔을 때는 마침표 없이 sqrt(16)으로만 부릅니다.
3. 변수 이름을 모듈 이름과 같게 짓는다
틀린 생각: import random 아래에서 변수 이름으로 random = 3을 써도 모듈 random은 따로 남아 있다.
모듈 이름도 똑같은 이름표이므로, random = 3을 실행하면 이름 random이 모듈 상자에서 떨어져 정수 3에 다시 붙습니다(규칙 3).
import random
random = 3
print(random.randint(1, 6))
Traceback (most recent call last): File "main.py", line 4, in <module> print(random.randint(1, 6)) ^^^^^^^^^^^^^^AttributeError: 'int' object has no attribute 'randint'random이 정수 3이 되어 버려 randint가 없다는 AttributeError가 납니다.
맞는 규칙: 가져온 모듈 이름(math, random 등)을 일반 변수 이름으로 덮어쓰지 않습니다.
확인 문제
1. 다음 코드를 실행하면 무엇이 출력될까요?
import math
from math import floor
print(math.ceil(2.1))
print(floor(2.9))
힌트
ceil(2.1)은 2.1을 올림한 정수이고, floor(2.9)는 2.9를 내림한 정수입니다.
정답
3
22.1을 올림하면 3, 2.9를 내림하면 2가 출력됩니다.
2. math 모듈에서 sqrt 함수를 직접 가져와 마침표 없이 print(sqrt(9))로 부르려고 합니다. 빈칸을 채우세요.
____ math ______ sqrt
print(sqrt(9))
힌트
모듈 안에서 특정 이름만 꺼내 올 때 쓰는 두 키워드입니다.
정답
from math import sqrt입니다.
3. 다음 코드는 math 모듈의 ceil을 쓰려 한 것인데 NameError가 납니다. 두 가지 방법 가운데 하나로 고쳐 보세요.
import math
print(ceil(5.3))
힌트
1번 줄을 그대로 두고 3번 줄을 고치거나, 반대로 3번 줄을 그대로 두고 1번 줄을 from ... import로 고칠 수 있습니다.
정답
3번 줄을 print(math.ceil(5.3))으로 고치거나, 1번 줄을 from math import ceil로 고치면 6이 출력됩니다.
아래 코드에서 math.sqrt(81)과 math.floor(7.8)도 출력해 보세요.
처음 펼 때 약 6MB를 받습니다.컴퓨터에서 해 보기
파이썬 3.14. Tab을 누르면 다음 단추나 칸으로 갑니다. 들여쓰기는 빈칸 네 개입니다. Enter는 앞줄 들여쓰기를 잇고, 콜론 뒤에서는 한 단계 더 들여 씁니다. Ctrl+Enter로 실행합니다.
'실행'을 누르면 여기에 나옵니다.
여기서 쓴 코드 · 내 예상은 저장하지도 운영자에게 보내지도 않습니다. 페이지를 새로 열면 처음 코드입니다.