Курс 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. Обновление шаблона base.html
  2. Форматирование строк в Python
  3. Списковые включения в Python
  4. Основы Python за 14 дней
  5. Склеивание строк без циклов
  6. Роль object и type в Python
  7. Установка Git и AWS CLI
  8. Обработка данных в Python
  9. Делегирование в Python
  10. Переопределение метода __and__
  11. Эффективная конкатенация строк в Python
  12. Использование подчеркивания в REPL
  13. Безопасные SQL-запросы в Python 3.11
  14. Измерение времени выполнения кода
  15. Копирование объектов в Python
  16. Удаление дубликатов с помощью множеств
  17. Pillow: работа с изображениями
  18. Сравнение def и lambda функций в Python
  19. Функция __init__ в Python
  20. Лямбда-функции в defaultdict
  21. Разделение строки на пары ключ-значение.
  22. Цикл for в Python
  23. Функции с дополнением
  24. Работа с кортежами в Python
  25. Создание пар из последовательностей
  26. Python union() функция — объединение множеств
  27. Проверка окончания строки с помощью str.endswith()
  28. Поиск HTML-элементов с BeautifulSoup
  29. Модуль itertools: эффективная работа с итераторами
  30. JMESPath в Python
  31. Декораторы в Python
  32. Группировка элементов Python
  33. Создание коллекций из генератора
  34. Python Метод sleep() из time
  35. Определение имен функций
  36. Возведение в квадрат с помощью itertools
  37. Получение текущего времени в Python
  38. Замена текста с помощью sub
  39. Возврат значений из генератора
  40. Генерация чисел с range()
  41. ChainMap избыточные ключи
  42. Философия Python
  43. Сортировка и обратный порядок
  44. Оптимизация создания строк

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