Курс 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. Метод count() для списка
  3. Получение значений из словарей
  4. Декоратор @override
  5. Удаление ссылок в Python
  6. Оптимизация памяти с __slots__
  7. Работа со слайсами
  8. Методы split() и join() — Python строк.
  9. Форматирование вывода с F-строками
  10. Библиотека sh: удобные команды терминала
  11. Работа с IP-адресами в Python
  12. Показ всплывающих окон Tkinter
  13. Методы в Python
  14. Python Тесты и Гайды
  15. Создание новых функций через partial
  16. Удаление элементов из списка в Python
  17. Работа с CSV файлами в Python
  18. Создание обратного итератора
  19. Получение текущей даты и времени
  20. Декораторы в Python
  21. Использование super() в Python
  22. Конкатенация строк с методом join()
  23. Установка и использование библиотеки google
  24. Magic Commands — улучшение работы с Python
  25. Преобразование данных в Python
  26. Python OrderedDict и fromkeys() — работа с словарями
  27. Инверсия списка/строки в Python
  28. Изменение объектов в Python
  29. Инициализация структур данных
  30. Вывод букв строки в Python
  31. Повторение и перенос строки
  32. Просмотр файла в Jupyter Noteboo
  33. Отрицательные индексы списков в Python
  34. Цикл for в Python
  35. Форматирование строк с % в Python
  36. Списковое включение в Python
  37. Просмотр внешнего файла в Python
  38. Протокол управления контекстом
  39. Counter() — подсчет элементов
  40. Форматирование строк в Python
  41. Изменение регистра данных
  42. Профилирование кода
  43. Подчеркивание в REPL
  44. Измерение времени выполнения кода
  45. Асинхронное программирование с asyncio
  46. Работа с пакетами
  47. Логирование с Logzero: ротация файла
  48. Определение размера папок в Python

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