Курс Python → Оптимизация памяти в Python

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

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

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


class WTF:
    pass

obj1 = WTF()
obj2 = WTF()

print(id(obj1))  # Выводит идентификатор объекта obj1
print(id(obj2))  # Выводит идентификатор объекта obj2

В приведенном примере мы создаем два объекта класса WTF и выводим их идентификаторы с помощью функции id(). Как правило, идентификаторы объектов будут различными, но в случае оптимизации памяти Python может использовать одинаковые идентификаторы для объектов, находящихся в одной и той же ячейке памяти.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Расчет времени выполнения
  2. Приближение чисел в Python
  3. Компиляция регулярных выражений
  4. Логирование с Logzero
  5. Список и кортеж в Python
  6. Логирование с Loguru
  7. Оператор «not» в Python
  8. Создание инструмента обнаружения плагиата
  9. Функция enumerate в Python
  10. Оптимизация памяти с __slots__
  11. *args и **kwargs в Python
  12. Присоединение элементов коллекции
  13. Транспонирование 2D-массива с помощью zip
  14. Сериализация и десериализация объектов
  15. Функции высшего порядка в Python
  16. Работа с deque из collections
  17. Импорт модуля из другого каталога
  18. Метод join() с набором
  19. Логирование в Python
  20. Оператор in в Python
  21. Создание пользовательской коллекции в Python
  22. Преобразование документов в PDF с помощью Spire.Office
  23. Управление ресурсами с контекстными менеджерами
  24. Поиск с помощью регулярных выражений
  25. Операторы Splat и splatty-splat
  26. Именованные срезы в Python
  27. Создание списков в Python
  28. Создание и инициализация объектов
  29. Применение функций в Python
  30. Метод get() в Python
  31. Monkey Patching в Python
  32. Аннотации типов в Python
  33. Расчет времени выполнения
  34. Объединение словарей в Python
  35. Генерация QR-кодов с Python
  36. Отладка утечек памяти в Python
  37. JSON в Python: модуль, dump, dumps, load
  38. Объединение словарей в Python
  39. Инициализация структур данных
  40. Работа с буфером обмена на Python
  41. Названия столбцов в Python таблицах
  42. Удаление эмодзи с помощью pandas
  43. GitHub в Telegram: подписка на уведомления
  44. Работа с библиотекой xkcd
  45. Статическая типизация в Python
  46. Генераторы в Python

Marketello читают маркетологи из крутых компаний