Курс 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. Defaultdict в Python
  2. Операторы увеличения и уменьшения в Python
  3. Изменение списка срезами
  4. Методы shutil для работы с файлами
  5. Разделение строк в Python
  6. Вакансии в Nebius
  7. Методы classmethod и staticmethod
  8. Изменения в обработке логических значений
  9. Работа с кортежами в Python
  10. Работа с очередями в Python
  11. Логирование в Python
  12. Отделение звука от видео
  13. Установка и использование Logzero
  14. Импорт классов из другого файла
  15. Непрерывная проверка в Python
  16. Измерение времени выполнения кода
  17. Подсчет элементов с помощью Counter
  18. Создание новых функций с помощью functools.partial
  19. Замена подстроки
  20. Решатель судоку на Python с pygame
  21. Добавление элемента в список.
  22. Метод repr() в Python
  23. Декораторы в Python
  24. Функции в Python: создание и вызов
  25. Работа с defaultdictами в Python
  26. UserList в Python: Описание и примеры использования
  27. Основы работы с os
  28. Проблемы с dict в Python
  29. Генераторы по генератору
  30. Оператор is в Python
  31. Навыки Python: строки, типы данных
  32. Метод join для объединения строк
  33. Анонимные функции Lambda
  34. Присвоение и ссылки
  35. Избегание циклических зависимостей классов в Python
  36. Цикл for в Python
  37. Вложенные циклы в Python
  38. Получение срезов итераторов
  39. Объединение словарей в Python
  40. Запуск файлового сервера
  41. Работа с датами в Python
  42. Удаление файлов в Python
  43. Визуализация пропусков данных
  44. Генераторы списков в Python
  45. Возвращение нескольких значений
  46. Необязательные аргументы в Python
  47. Переопределение метода __and__
  48. Переопределение метода __floordiv__
  49. Замена символов в строке

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