Автор оригинала: Pankaj Kumar.
Функция Python ID () Возвращает «идентичность» объекта. Личность объекта представляет собой целое число, которое гарантируется уникальным и постоянным для этого объекта в течение его жизни.
Два объекта с невыполненным временем, могут иметь то же значение ID (). В реализации CPYPHON это адрес объекта в памяти.
ID Python ID ()
Кэш Python Cache ID () Значение обычно используемых типов данных, таких как строка, целое число, кортежи и т. Д., Итак, вы можете обнаружить, что несколько переменных относятся к одному и тому же объекту и имеют то же значение ID (), если их значения одинаковы.
Давайте проверим это с примером.
# integers a = 10 b = 10 c = 11 d = 12 print(id(a)) print(id(b)) print(id(c)) print(id(d))
Выход:
4317900064 4317900064 4317900096 4317900128
Обратите внимание, что значение ID () «A» и «B» являются одинаковыми, они имеют одинаковое целое значение.
Давайте посмотрим, получаем ли мы также подобное поведение со строкой и кортежами?
# tuples t = ('A', 'B') print(id(t)) t1 = ('A', 'B') print(id(t1)) # strings s1 = 'ABC' s2 = 'ABC' print(id(s1)) print(id(s2))
Выход:
4320130056 4320130056 4320080816 4320080816
С вывода ясно, что Python кэширует строки и объекты кортежа и используют их для экономии пространства памяти.
Мы знаем, что словарь не неизменно, давайте посмотрим, если ID () отличается для разных словарей, даже если элементы такие же?
# dict d1 = {"A": 1, "B": 2} d2 = {"A": 1, "B": 2} print(id(d1)) print(id(d2))
Выход:
4519884624 4519884768
Как мы думали, объекты Dict возвращаются разным значением ID (), и здесь кажется, нет кэширования.
Python ID () для пользовательского объекта
Давайте посмотрим простой пример получения значения ID () для пользовательского объекта.
class Emp: a = 0 e1 = Emp() e2 = Emp() print(id(e1)) print(id(e2))
Выход:
4520251744 4520251856
Резюме
Значение Python ID () гарантируется уникальным и постоянным для объекта. Мы можем использовать это, чтобы убедиться, что два объекта относятся к тому же объекту в памяти или нет.
Ссылка: Официальная документация