Управление памятью в Python отличается от других языков программирования. Если у вас есть опыт работы с C++, то это другое дело. Мой первый язык программирования — C++, поэтому я пытаюсь сравнить оба. Возьмем пример на C++

#include ‹iostream›

использование пространства имен std;

интервал основной () {

инт а = 5;

интервал б = 5;

cout ‹‹”id a = “‹‹ &a ‹‹” id b = “‹‹ &b‹‹ endl;

}

В моем случае вывод id a = 0x7bfe1c id b = 0x7bfe18. В вашем случае все по-другому. Понятно, что их адреса памяти разные, хотя они содержат одно и то же значение int 5.

Теперь перейдите к Python

a = 5
b = 5
print(id(a),id(b))

В моем случае результат равен 2816231827888 2816231827888, что идентично.

В Python, если значения лежат между -5, -4, -3, ……., 255 256, то они содержат тот же адрес, другой пример

a = -4
b = -4
print(id(a),id(b))

В моем случае результат равен 2470856714384 2470856714384, что идентично.

теперь, когда я меняю значение a, адрес a изменяется, но адрес b остается прежним.

Возьмем другой пример.

a = 100
print(id(a))

Мой вывод: 2465810109904.

Теперь, когда я меняю значение лайка:

a = -150
print(id(a))

Теперь мой результат равен 2465813699152.

Теперь во всей программе переменная, содержащая значение 100, становится адресом 2465810109904.

Теперь полный пример

a = 100
print("address of a = ",id(a))
a = -150
print("address of a after change = ",id(a))
b = 100
print("address of b = ",id(b))

Мой вывод

адрес a = 140728211668872
адрес a после изменения = 2461006720464
адрес b = 140728211668872

Таким образом, после завершения запускается программа-сборщик мусора, которая уничтожает текущие значения.