Java에서는, 문자열 객체가 생성될 때마다 새로운 주소를 할당하는 방식을 사용합니다. 그러나 Python의 경우 문자열 객체 생성 시 매번 새로운 객체를 만드는 대신 기존에 선언되어 있던 immutable 객체를 사용합니다. 이는 CPython의 최적화 기법string interning에 의한 동작입니다. 따라서 둘 이상의 변수메모리의 동일한 문자열 객체를 가리킬 수 있고, 메모리를 절약하게 됩니다.

string interning의 규칙

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

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

'Python 계열 > Python 레거시 글' 카테고리의 다른 글

[Python] Decorator  (0) 2018.07.21
[Python] Closure  (0) 2018.07.20
[Python] 함수 인자의 기본값 평가  (0) 2018.07.14
[Python] @property와 setter  (0) 2018.07.13
[Python] Keyword exclusive argument  (0) 2018.07.11

+ Recent posts