id() возвращает целое, неизменное и уникальное для объекта в течение его жизни. В CPython оно связано с адресом объекта; это деталь реализации, а не требование языка.
Опишите механику работы встроенной функции id(). Почему в CPython она возвращает адрес объекта в памяти и в каких реализациях Python, например PyPy, это поведение кардинально отличается из-за перемещающего сборщика мусора?
id() возвращает целое, неизменное и уникальное для объекта в течение его жизни. В CPython оно связано с адресом объекта; это деталь реализации, а не требование языка.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
id() возвращает целое, неизменное и уникальное для объекта в течение его жизни. В CPython оно связано с адресом объекта; это деталь реализации, а не требование языка.
После уничтожения объекта значение id может быть переиспользовано. В реализациях с перемещающим GC, например PyPy, логическая идентичность поддерживается независимо от текущего физического адреса. Поэтому id нельзя использовать как универсальный указатель, постоянный ID в БД или сетевой идентификатор. Для проверки того, что две ссылки обозначают один объект, применяют is; числовые адреса обычно не нужны прикладному коду.