все Python 3Встроенные функциипонятие
id
интроспекция
Возвращает уникальный идентификатор объекта на время его жизни; в CPython это адрес в памяти.
Синтаксис
id(object)
Идентификатор уникален только пока объект жив: после сборки мусора то же число может достаться новому объекту, так что запомнить id и сравнить его позже — ненадёжно. Практический смысл один — понять, один это объект или два, и для этого читабельнее a is b, тогда как равенство значений проверяют через ==. Осторожно с интернированием: CPython кеширует маленькие целые (от -5 до 256) и короткие строки, поэтому у одинаковых литералов id часто совпадает — строить на этом логику нельзя.
Примеры
x = 42
y = x
print(id(x) == id(y)) # → True (одно и то же имя, один объект)
print(id(42) == id(42)) # → True (маленькие целые интернированы)
a = 'hello'; b = 'hello'
print(id(a) == id(b)) # → True (интернирование строк)
# Ловушка: id([]) == id([]) даёт True, и это НЕ значит «один объект».
# Первый список освобождается сразу после вычисления id, и второй получает
# тот же адрес. Сравнивать так нельзя — объекты должны быть ЖИВЫ:
first, second = [], []
print(id(first) == id(second)) # → False (два живых списка — разные объекты)
print(first is second) # → False (is сравнивает по id, но держит ссылки)
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности