Рубрики
Без рубрики

Использование функции ID () в Python

Всем привет! В современной статье мы посмотрим на функцию ID () в Python.

Автор оригинала: 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 ( )