Изменяемые и неизменяемые объекты в Python*

  • Переменные в Python — это ссылки на объекты в памяти компьютера

  • Каждый объект в памяти имеет:

    • идентификатор : адрес в оперативной памяти компьютера

    • тип : строка, число, список и т.д

    • значение

name = "Sergey"
id(name) # узнать идентификатор объекта
~# 140291548567088
  • В момент определения переменной создаётся объект в памяти компьютера, затем ему присваивается ссылка — имя переменной

  • Объекты могут быть изменяемые(например: списки) и неизменяемые(например: строки, числа)

c = 5 # c - ссылка на объект число 5
d = c # создадим ещё одну ссылку на этот же объект

c += 1 # добавим 1 к c - теперь c ссылаетcя на ДРУГОЙ объект: число 6
c == 6 # True
d == 5 # True

a = [42] # a - ссылка на объект - список из одного элемента
b = a # создадим еще одну ссылку на этот же объект

a.append(5) # изменим ОБЪЕКТ - добавим элемент
a == [42, 5] # True
b == [42, 5] # True - b тоже изменилась, т.к. список это изменяемый объект

В итоге мы получим такую картину: в памяти у нас остался один объект: список и два объекта целые числа

  • Оператор is сравнивает объекты по адресам, т.е. проверяет, СОВПАДАЮТ ли объекты. Оператор == сравнивает РАВНЫ ли объекты

Практика:

  • Повторите код из занятия. Проверьте, совпадают ли a и b, c и d. На каждом этапе программы посмотрите идентификаторы объектов.

Last updated