Курс 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. Модуль inspect
  2. Измерение времени выполнения
  3. TON Smart Challenge #2: участие и подготовка
  4. Flask — веб-фреймворк Python
  5. Метод __irshift__ для побитового сдвига вправо
  6. Преобразование регистра строк
  7. Преобразование числа в восьмеричную строку
  8. Big O оптимизация
  9. Сравнение def и lambda функций в Python
  10. Оптимизация памяти с помощью __slots__
  11. Оператор «is not» в Python
  12. Повторение элементов в Python
  13. Работа с буфером обмена на Python
  14. GitHub в Telegram: подписка на уведомления
  15. Иерархия классов в Python
  16. Структурирование данных с Pydantic
  17. Работа с collections в Python.
  18. Python Метод del.
  19. Возвращение нескольких значений через кортеж или класс
  20. Названия переменных
  21. Модуль math: основные функции
  22. Декоратор защиты анонимных пользователей
  23. Сортировка в Python
  24. Библиотека wikipedia для Python
  25. Метод rmatmul для пользовательских матриц
  26. Bootle — простой веб-фреймворк
  27. Генераторы словарей и множеств
  28. Непрерывная проверка в Python
  29. Оценка выражений генератора в Python
  30. Работа с множествами в Python
  31. Отладка в командной строке
  32. Работа с deque из collections
  33. Работа с deque из collections
  34. Создание директории в Python
  35. Работа с парами ключ-значение
  36. Метаклассы в Python
  37. Работа с утверждениями в Python
  38. Оптимизация строк в Python
  39. Оператор is в Python
  40. Подсчет вхождений элементов
  41. Синхронизация потоков с time.sleep()
  42. Отправка HTTP-запросов с User-Agent
  43. Счетчик в Python: most_common()
  44. Инициализация структур данных
  45. Обмен переменными в Jupyter

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