В 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, и его вычищают из памяти. Поэтому следующий список инициализируется в том же месте памяти.
Комментарии
Отправить комментарий