Имя a связывается с объектом целого числа 5. Присваивание не создаёт отдельную изменяемую ячейку с копией числа: имя хранит ссылку на объект, который для константы может уже существовать.
Что происходит в памяти Python при присваивании a = 5?
Имя a связывается с объектом целого числа 5. Присваивание не создаёт отдельную изменяемую ячейку с копией числа: имя хранит ссылку на объект, который для константы может уже существовать.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Имя a связывается с объектом целого числа 5. Присваивание не создаёт отдельную изменяемую ячейку с копией числа: имя хранит ссылку на объект, который для константы может уже существовать.
В CPython небольшие целые часто переиспользуются, поэтому новый объект при каждом таком присваивании не обязателен. Точное место привязки зависит от области: локальная переменная функции и имя модуля хранятся по-разному. Если затем выполнить a = 6, изменится привязка имени, а не содержимое объекта 5, поскольку int неизменяем. Не следует путать эту семантику языка с конкретным адресом памяти или числом выделений в определённой версии интерпретатора.