Курс 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. Функция product() в Python
  5. Списки в Python
  6. Управление виртуальными средами в Python
  7. Определение имен функций
  8. Установка User-Agent в Python
  9. Переворот последовательности
  10. Генераторы списков в Python
  11. Метод bool() в Python
  12. Работа с JSON в Python
  13. Создание Radio кнопок в tkinter
  14. Метод join() для объединения строк
  15. Хэш-функции и метод цепочек
  16. Работа с кортежами в Python
  17. Python Ellipsis использование
  18. Базовые объекты Python
  19. Именованные кортежи в Python
  20. Создание веб-приложения с Flask
  21. Работа с кортежами
  22. Обмен значений переменных в Python
  23. Метод split() в Python
  24. Работа с итераторами в Python
  25. Оптимизация памяти с __slots__
  26. Python: цикл for и оператор присваивания
  27. Сравнение строк в Python
  28. Python 3.12: Псевдонимы типов
  29. Работа с атрибутом dict
  30. Сортировка данных с лямбда-функциями
  31. Многострочные строки в Python
  32. Декораторы с аргументами
  33. Обратное распространение ошибки
  34. Progress с библиотекой tqdm
  35. Работа с WindowsPath()
  36. Обмен значений переменных в Python
  37. Решение переменной Шредингера
  38. Операторы Splat и splatty-splat
  39. Запуск асинхронной корутины
  40. Форматирование кода на Python
  41. Установка Home Assistant
  42. Работа с множествами в Python
  43. Вызов функций по строке в Python.
  44. Экранирование символов в Python

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