Python

Updated:

[Python] 문자열의 메모리 할당 방식

Python의 경우 문자열 객체 생성 시 매번 새로운 객체를 만드는 대신 기존에 선언되어 있던 immutable 객체를 사용합니다.

이는 CPython의 최적화 기법인 string interning에 의한 동작입니다. 따라서 둘 이상의 변수가 메모리의 동일한 문자열 객체를 가리킬 수 있고, 메모리를 절약하게 됩니다.

Example

a = 'Hello'
b = 'Hello'

print(id(a), id(b))
> 4376187184 4376187184

string interning 최적화에는 몇가지 규칙이 있습니다.

  • 길이가 0 또는 1인 문자열은 intern
  • 컴파일 타임에만 intern : 동적으로 문자열을 만들어내는 경우(포맷팅 등) intern되지 않음
  • ASCII 문자, 숫자 또는 언더스코어가 아닌 문자가 속해 있는 경우(!, ? 등) intern되지 않음

Example

a = "Hello World!"
b = "Hello World!"

print(id(a), id(b))
> 4374237616 4376187568

Leave a comment