Управление памятью в 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
Таким образом, после завершения запускается программа-сборщик мусора, которая уничтожает текущие значения.