Еще одна заметка об id () и переосмысление чужого ответа об этом. id () может возвращать уникальный номер, если и только если он запоминает каждый когда-либо возвращенный идентификатор, даже если объект удален; чего он (id ()) не делает. Итак, поэтому ...
В подтверждение того, что говорили другие, id () не возвращает уникальный номер; Это правда, что он не может гарантировать уникальное значение тогда и только тогда, когда вы храните эти значения id () в качестве ссылок на объекты И для которых вы удаляете экземпляры объектов, для которых вы получаете id (). НО ! использование id () в качестве ссылки означает, что у вас в основном есть объект, ключ которого каким-то образом связан с другим объектом.
Это не аннулируется неуникальностью id (). Он становится недействительным только в том случае, если вы не проверяете, имеет ли добавляемый новый объект уже существующий идентификатор (), уже сохраненный как ссылка на какой-то другой экземпляр объекта.
storeit = {}
object1 = object()
print id(object1)
4357891223
storeit[ id(object1) ] = object1
object2 = object()
print id(object2)
9834923411
storeit[ id(object2) ] = object2
storeit[ id(object1) ] = object()
del object1
object3 = object()
print id(object3)
# after some 2 gigawatt tries magically i got
4357891223
# the same id as object1 had
НО storeit [4357891223] возвращает некоторый другой экземпляр объекта, а не object3; поэтому <ссылка> остается действительной, но уникальность не срабатывает.