В Python все данные - объекты

Краткий ответ: Объекты

Все данные в Python - это объекты. Каждый объект имеет свой идентификатор, тип, и значение.

Для получения идентификатора объекта есть функция 

id("привет") # Выводит адрес в котором хранится объект

Для получения типа объекта:

type("привет") # Выводит тип, в этом случае str

Объекты делятся на два типа: Изменяемые и неизменяемые. Значение изменяемых объектов может изменится. Неизменяемые объекты не могут изменить свое значение после создания. Способность объекта к изменяемости зависит от его типа. Например цифры, строки, кортежи  - неизменяемыеА списки, словари, множества - изменяемые

Поскольку списки изменяемые, каждый новый инстанс списка имеет свое уникальное значение:

a = [1]
id(a) # 140435239681096
b = a
id(b) # 140435239681096
print(a) # [1]

Если вы попробуете присвоить новый список для b, то переменная b будет ссылатся на новый список, но переменная a останется неизменной.

В объектах так же есть счетчик ссылок, когда на объект ссылается 0 объектов то garbage collector удаляет его из памяти:

id([1,3]) # 140435180166472
b = [5,4]
id(b) # 140435180166472

На первый список у нас не ссылается ни одна переменная, поэтому её счётчик ссылок уменьшается до 0, и его вычищают из памяти. Поэтому следующий список инициализируется в том же месте памяти. 

Комментарии

Популярные сообщения из этого блога

DOS атака при помощи Python

Ведем телеграм канал через питон

Django migrations не видит изменения моделей