string reference 어디까지 적용되나?

오픈소스·2020년 10월 18일
0

Python

https://medium.com/broken-window/many-names-one-memory-address-122f78734cb6
>>> my_string = "Hello World"
>>> id(my_string)
140418271505840
>>> another_string = my_string
>>> id(another_string)
140418271505840
>>> another_string = another_string + "!"
>>> id(another_string)
140418271505200

>>> my_string = "Hello World"
>>> id(my_string)
140418271504752
>>> another_string = "Hello World"
>>> id(another_string)
140418271505776

assignment는 기본적으로 독립적인 메모리를 할당합니다.

>>> my_string = "hello"
>>> id(my_string)
140418271505840
>>> another_string = "hello"
>>> id(another_string)
140418271505840

CPython에서 아래의 경우 재사용 됩니다.

  • 공백이 없는 20자 미만없는 문자열
  • 5에서 +255까지의 정수

CPython, PyPy, Jython, IronPython 구현에 따라 다릅니다.

For interning an object, it must first search for the object in memory, and searching takes time. This is why the special treatment only applies for small integers and strings, because finding them is not that costly.

python string도 primitive type이다.
python data type

Javascript

https://codeburst.io/explaining-value-vs-reference-in-javascript-647a975e12a0
javascript에서 string은 primitive type (not object) 입니다. - https://velog.io/@youngkiu/plural-data-type-comparison-of-javascript-and-python 그림 참조

var x = 10;
var y = 'abc';

var a = x;
var b = y;

a = 5;
b = 'def';
console.log(x, y, a, b); // -> 10, 'abc', 5, 'def'

python이든 javascript이든 primitive type은 immutable 하다.

0개의 댓글