Курс 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. Аргументы *args и **kwargs
  2. Установка максимального количества цифр
  3. Основы работы с базами данных в Python
  4. Метод rsub в Python: расширение функциональности вычитания
  5. Создание спинбокса в tkinter
  6. Обработка исключений в Python
  7. Переопределение оператора % для объектов
  8. Получение текущего времени в Python
  9. Применение функции map() в Python
  10. Работа с модулем random
  11. Область видимости переменных в Python
  12. Выход из профиля в Django
  13. Замер времени выполнения кода
  14. Проверка условий: all и any
  15. Возвращение нескольких значений
  16. Подчеркивание в REPL
  17. Запрос пароля с помощью getpass
  18. Методы classmethod и staticmethod
  19. Нарезка списков в Python
  20. Декораторы с аргументами
  21. Округление банкира в Python
  22. Функции высшего порядка в Python
  23. Структурирование данных с Pydantic
  24. Удаление элементов во время итерации
  25. Поиск кода
  26. Инициализация структур данных
  27. Определение индекса элемента списка
  28. Получение обратного списка чисел
  29. Метод lt для сортировки объектов
  30. Блок try-except-else
  31. JSON в Python: модуль, dump, dumps, load
  32. Избегайте ошибку FileNotFoundError
  33. Тип данных TypeVarTuple
  34. Работа с файлами в Python
  35. Преобразование вложенного списка
  36. Удаление дубликатов из списка с помощью dict.fromkeys
  37. Bootle — простой веб-фреймворк
  38. Ускоренный импорт библиотек
  39. Декодирование строк в Python
  40. Сравнение неупорядоченных списков
  41. Решатель судоку на Python с pygame
  42. Логирование с Loguru
  43. Работа с GitHub в Telegram
  44. Создание инструмента обнаружения плагиата
  45. Генерация чисел с range()

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