Функция Python id()

Вот объяснение id() в w3schools:

Функция id() возвращает уникальный идентификатор указанного объекта. Все объекты в Python имеют свой уникальный идентификатор. Идентификатор присваивается объекту при его создании. Идентификатор — это адрес памяти объекта, и он будет разным при каждом запуске программы.



Из приведенного выше объяснения, есть кое-что, на что мы должны обратить внимание:

  1. Важно отметить, что все в Python является объектом, даже целые числа и классы. Поэтому, если вы запустите id(123), вы все равно получите целое число, представляющее его идентификатор.
  2. Целое число, возвращаемое функцией id(), представляет собой адрес памяти объекта, поэтому мы можем использовать это целое число, чтобы проверить, указывают ли два объекта на один и тот же адрес.


Объект списка Python и id()

Объект списка в Python очень похож на массив в других языках. Все они имеют некоторые методы, такие как вставка, выталкивание, удаление, индексация и т. д. Вы также можете читать и записывать определенную позицию в списке с постоянным временем. Но если вы используете функцию id() для поиска элементов в списке, вы обнаружите самую большую разницу между списком и массивом:

Адреса элементов в списке не являются непрерывными! Обычный массив использует непрерывные позиции в памяти для хранения данных, а список в питоне — нет.

На самом деле список в python реализован массивом указателей, которые указывают на элементы списка.

неизменный

В Python все является объектом, и у каждого есть следующие атрибуты:

  • identity: для представления адреса памяти для этого объекта. Вы можете получить идентификатор из метода id(), упомянутого выше. После того, как объект создан, вы не можете изменить его идентификатор.
  • type: для представления типа этого объекта. Вы также можете получить его из метода type(). Опять же, как только объект создан, вы не можете изменить его тип.
  • значение: для представления данных или значения в этом объекте. В отличие от идентификатора и типа, значение некоторого объекта может быть изменено. Мы называем такие объекты «изменяемыми» и «неизменяемыми» для тех, которые не могут изменить значение».

Итак, какие общие типы являются изменяемыми и неизменяемыми в python?

неизменяемые объекты:

  • Числовые типы: int, float, комплекс
  • нить
  • кортеж

изменяемые объекты:

  • список
  • диктовать
  • набор

Мы можем показать, что список является изменяемым, используя id():

>>> a = [0, 1, 2]
>>> id(a)
4472721480
>>> a[2] = 3
>>> id(a)
4472721480
>>> a
[0, 1, 3]

Или покажите, что int неизменен:

>>> a = 1
>>> id(a)
4470587440
>>> a = 2
>>> id(a)
4470587472

ссылка: http://wsfdl.com/python/2013/08/14/%E7%90%86%E8%A7%A3Python%E7%9A%84mutable%E5%92%8Cimmutable.html