Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)의 불변(Immutable) 데이터 타입이란? 핵심 개념 총정리

불변(Immutable) 객체란 무엇인가?

파이썬에서 불변(immutable) 객체란 한 번 메모리에 생성된 이후에는 그 값을 변경할 수 없는 객체를 의미합니다. 불변 객체의 값을 수정하려고 시도하면 기존 객체가 바뀌는 것이 아니라, 변경된 값을 가진 새로운 객체가 새로 생성됩니다.


파이썬의 대표적인 불변 데이터 타입

파이썬에서 불변 속성을 가지는 주요 데이터 타입은 다음과 같습니다.

- 숫자형(Number): int, float, complex
- 문자열(String): str
- 튜플(Tuple): tuple
- 불린(Boolean): bool
- frozenset: 변경 불가능한 집합
- bytes: 변경 불가능한 바이트 시퀀스


예를 들어 문자열은 인덱스로 특정 문자를 읽을 수는 있지만, 직접 수정하려고 하면 오류(TypeError)가 발생합니다.

s = "hello"
s[0] = "H"  # TypeError: 'str' object does not support item assignment

주의: 딕셔너리와 리스트는 가변(Mutable) 객체

흔히 혼동하기 쉬운 부분이지만, 파이썬에서 딕셔너리(dict)는 불변 객체가 아니라 가변(mutable) 객체입니다. 딕셔너리는 생성된 후에도 키-값 쌍을 자유롭게 추가, 수정, 삭제할 수 있습니다.

마찬가지로 리스트(list)집합(set)도 가변 객체에 해당하며, 요소를 언제든 변경할 수 있습니다.


불변 객체를 사용하는 이유

불변 객체는 값이 중간에 바뀌지 않기 때문에 코드의 안정성과 예측 가능성을 높여줍니다. 또한 파이썬 내부적으로 해싱(hash)이 가능해 딕셔너리의 키나 집합의 요소로 사용할 수 있다는 장점도 있습니다.