Почему некоторые типы данных относятся к одной и той же ячейке памятиPython

Программы на Python
Anonymous
Почему некоторые типы данных относятся к одной и той же ячейке памяти

Сообщение Anonymous »

Задал такой вопрос. Почему только тип str и boolean с одинаковыми переменными относятся к одному месту памяти:

a = 'something'
b = 'something'
if a is b: print('True') # True


но мы нигде не писали a=b. следовательно, интерпретатор увидел, что строки равны друг другу, и сделал ссылку на одну ячейку памяти.

Конечно, если мы присвоим новое значение любой из этих двух переменных, конфликта не будет, поэтому теперь переменная будет ссылаться на другую ячейку памяти

b = 'something more'
if a is b: print('True') # False


с логическим типом все то же самое

a = True
b = True
if a is b: print('True') # True


Сначала я подумал, что это происходит со всеми изменяемыми типами. Но нет. Остался один неизменный тип — кортеж. Но у него другое поведение, то есть когда мы присваиваем переменным одинаковые значения, мы уже обращаемся к разным ячейкам памяти. Почему это происходит только с кортежем неизменяемых типов

a = (1,9,8)
b = (1,9,8)
if a is b: print('True') # False


Подробнее здесь: https://stackoverflow.com/questions/476 ... y-location

Вернуться в «Python»