더북(TheBook)

2.1 문자열은 불변이다

파이썬의 데이터 타입은 가변(mutable/changeable)이거나 불변(immutable)이다.

가변 타입의 장점은 명확하다. 데이터가 ‘즉시’ 변경될 수 있다는 것이며, 변경하기 위해 매번 새로운 객체를 처음부터 만들 필요가 없다는 의미다. 변경할 수 있는 타입은 리스트, 딕셔너리, 세트다.

불변 타입의 장점은 가변 타입에 비해서 쉽게 알아채기 어렵지만, 이 또한 중요하다. 바로 불변 타입을 딕셔너리의 키로 사용할 수 있다는 점이다. 일반적으로 딕셔너리의 키가 문자열인 것처럼 말이다. 다음과 같이 영화 비평가들의 영화 평점을 저장한 딕셔너리가 그 예다.

movie_dict = { '기생충': 5.0, '살인의 추억': 4.5, '재미 없는 영화': 2.0 }

변경할 수 없는 불변 타입의 장점은 이 타입을 사용할 때 이미 내부적으로 성능이 최적화되어 있는 데이터 타입을 사용할 수 있다는 것이다. 가령 튜플을 사용하면 리스트를 사용하는 것보다 더 효율적이다.

반대로 불변 객체는 변경할 수 없다는 점이 제약 사항이기도 하다. 따라서 다음 코드는 제대로 동작하지 않는다.

my_str = '예준아 안녕.'
my_str[0] = '원' # 에러!
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.