새소식

반응형
개발 (Development)/┣Python

[파이썬 철학] 문자열이 immutable 타입인 이유

  • -
반응형

1. Introduction

c와 달리 자바나 파이썬에서 문자열은 immutable이다. 즉, 초기화한 뒤로 문자열을 수정할 수 없다. 불변타입을 지정하는 const같은 명령어가 없는 것도 아니고 대체 왜 이렇게 불편하게 했을까?

2. Cause

2.1 참조 횟수

string 타입은 중복 참조가 매우 많다. 다이얼로그 메세지에서 등장하는 문자열은 물론이고, 대부분의 프로그램에서 하드 코딩된 문자열은 참조만 할 뿐, 수정할 일이 없다.

2.2 스레드 보안

이건 다른 변수도 마찬가지겠지만, Shared area에 있는 변수들은 변화에 민감하다. 어떤 스레드가 함부로 값을 바꿨다가 다른 수 많은 스레드가 이상한 값을 읽을 수도 있다.

2.3 해싱

내가 생각하기로는 이쪽이 가장 큰 이유다.

수정가능한 자료형은 해시의 키 (key)로 쓸 수가 없다. 만약 해시의 키로 들어간 문자열이 수정됐다고 생각해보자.

그럼 당연히 해시 함수값이 바뀐다. 즉 원래 키에 대한 값 (value)을 찾을 수 없게 된다.

이런 이유로 파이썬에서는 리스트를 해시의 키로 넣어줄 수 없다. 리스트는 수정이 가능하기 때문이다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.