Python은 숫자, 텍스트, 컬렉션 등을 아우르는 풍부한 내장 타입 집합을 가지고 있습니다. 이들을 알고 — 그리고 어떤 것이 **가변(mutable)**이고 어떤 것이 **불변(immutable)**인지 아는 것 — 은 기본적인 일입니다.
숫자 타입
python
x = 42 # int — 임의 정밀도 (오버플로 없음!)
y = 3.14 # float
z = 2 + 3j
b =
참고: Python의 int는 **임의 정밀도(arbitrary precision)**를 가지므로 절대 오버플로되지 않습니다(C/Java의 고정 크기 int와 다름). 2 ** 1000도 그냥 동작합니다.
s = "hello" # str — 유니코드 텍스트 (불변)
data = b"bytes" # bytes — 원시 이진 데이터 (불변)
lst = [1, 2, 3] # list — 순서 있음, 가변, 중복 허용
tup = (1, 2, 3) # tuple — 순서 있음, 불변
d = {"a": 1, "b": 2} # dict — 키→값, 가변, 삽입 순서 유지
s = {1, 2, 3} # set — 순서 없음, 고유 요소, 가변
fs = frozenset({1, 2}) # frozenset — 불변 집합
result = None # NoneType — "값 없음"을 나타냄 (null과 유사)
if result is None: # None과 비교할 때는 항상 ==가 아니라 `is`를 사용
...
type(x) # <class 'int'>
isinstance(x, int) # True — 선호되는 방식 (하위 클래스도 처리)
불변: int, float, bool, str, tuple, frozenset, bytes, None
가변: list, dict, set, bytearray
이 구분은 매우 중요합니다 — 불변 객체는 dict 키가 될 수 있고 공유해도 안전하지만, 가변 객체는 별칭(alias)이 생기면 예기치 않게 변할 수 있습니다.
내장 타입은 모든 Python 코드의 어휘입니다.
각각의 용도(순서 있는 시퀀스는 list, 키-값은 dict, 고유성은 set, 고정된 레코드는 tuple), 임의 정밀도 정수, 그리고 특히 가변 vs 불변 구분(dict 키, 별칭 버그, 안전하게 공유할 수 있는 대상을 좌우함)을 아는 것은 기초적입니다.
작업에 맞는 올바른 타입을 선택하고 — 그 가변성을 이해하는 것 — 은 프로그램 전반의 정확성과 성능에 영향을 미치는 핵심 Python 역량입니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기