Как python выделяет память для строк и кортежей? - PullRequest
0 голосов
/ 27 мая 2018

Оператор id дает адрес переменной, поэтому я сделал следующее

>>> a = "HELLO"  
>>> b = "HELLO"  
>>> id(a)  
140353863080400  
>>> id(b)  
140353863080400 

Я не понимаю, как a, b оба могут ссылаться на один и тот же объект, если бы не было двухстроковые объекты "HELLO" созданы?
Также, когда я сделал то же самое с кортежами (которые, поскольку я думал, что неизменяемые будут следовать описанному выше шаблону), я получил разные результаты

>>> x = (1,2,3,4,5)  
>>> y = (1,2,3,4,5)  
>>> id(x)  
140353863106720  
>>> id(y)  
140353887969216 

Теперь Python создает дваотдельные объекты кортежей Почему в строках и кортежах существует разница в поведении, хотя оба они неизменны?
Я использую python 3.6.1

...