Автор оригинала: Pankaj Kumar.
Использование функции ID () в Python
Всем привет! В современной статье мы посмотрим на функцию ID () в Python.
Функция ID () возвращает идентичность любого объекта Python. Это вернет целочисленный идентификационный номер для разных объектов.
Базовая реализация Cpython использует ID ()
Функция как адрес объекта в памяти.
Давайте понять это немного больше, используя некоторые примеры.
Основной синтаксис функции ID () в Python
Эта функция принимает любой объект Python – будь то целое число, поплавок, строку, списку, класс, функция, лямбда и т. Д., И возвращает идентификатор целого числа.
val = id(object)
Использование ID () в Python
ID объекта полезен для Python, чтобы кэшировать значения этих переменных. Этот механизм извлечения кэшированных значений с использованием ID ()
Заставляет Python работать лучше!
Это также помогает в тех случаях, когда несколько переменных относятся к одному и тому же объекту.
a = 1233.45 b = a print(id(a)) print(id(b))
Выход
2775655780976 2775655780976
В этом случае для Python было бы легче отслеживать ссылок ссылаться, поэтому ID () A будет такой же, как и из б.
Теперь давайте попробуем использовать это на некоторых простых объектах Python.
print(id(103)) # Int print(id(104)) print(id(10.25)) # Float print(id('Hello from AskPython')) # String print(id([1, 2, 3])) # List print(id(lambda x: x * x)) # Lambda
Выход
1658621232 1658621264 2775655780976 2775665230232 2775665206344 2775656111776
Как вы можете наблюдать, для целых чисел 103 и 104, существует только разница 32 в их идентификационных номерах. Это имеет смысл! Почему?
Помните, что мы упомянули, что ID ()
Относится к адресу объекта?
ID (104) – это следующий адресный блок после целого числа 103. Поскольку целые числа в Python хранятся в виде 4 байтов, это составляет 32 бита, и это именно разница между их идентификационными числами.
Таким образом, Python хранит список всех целых чисел в последовательных блоках, которые одинаково расположены. Имеет смысл?
Теперь давайте проверим их на струнах:
# strings s1 = 'ABC' s2 = 'ABC' print(id(s1)) print(id(s2))
Выход
2775656418080 2775656418080
Как вы можете наблюдать, Python действительно входит в кеш строки, чтобы сохранить память!
Помните, что кэширование может работать только на неизменный Объекты Python, как целое число, струнные и плавать. Кортежи , Списки И т. Д. Изменные объекты, поэтому кэширование не будет работать здесь!
Чтобы доказать это, давайте проверим идентификатор двух списков, имеющих те же элементы:
>>> l1 = [1, 2, 3, 4] >>> l2 = [1, 2, 3 ,4] >>> id(l1) 2775665206344 >>> id(l2) 2775665185224
Здесь, поскольку списки измеряются, нет никакой кэширования.
Использование ID () на пользовательском объекте
Мы также можем использовать функцию ID () на пользовательских объектах.
Давайте возьмем простой пример:
class Student(): def __init__(self, name, id): self.name = name self.id = id s = Student('Amit', 10) t = Student('Rahul', 20) print(id(s)) print(id(t))
Выход
2775665179336 2775665179448
Это относится к адресу памяти, где объекты хранятся, которые, очевидно, отличаются для двух экземпляров!
Заключение
В этой статье мы узнали об использовании функции ID () в Python. Это представляет собой базовый адрес памяти объекта Python, который полезен в кэшировании неизменных объектов.
использованная литература
- Ж у р н а л д а в С т а т ь я | | н а ф у н к ц и и P y t h o n I D ( )