Курс 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. Colorama: окрашивание текста в Python
  2. Преобразование генераторов в циклы
  3. Создание списка дат
  4. Логирование с Loguru
  5. Операторы объединения в Python 3.9
  6. Решение переменной Шредингера
  7. Операции со строками в Python
  8. Игра «Камень, ножницы, бумага» — Python
  9. Основы Python за 14 дней
  10. Отрицательные индексы списков в Python
  11. Оформление кода на Python
  12. Замена переменных в Python
  13. Документация функции help() в Python
  14. Удаление символов новой строки в Python.
  15. Путь к интерпретатору Python
  16. Оператор in для проверки наличия элемента
  17. Транспонирование 2D-массива с помощью zip
  18. Создание множества в Python
  19. Атрибуты класса и экземпляра
  20. Фильтрация списков с itertools
  21. Тип CodeType в Python.
  22. Функция map() и ленивая оценка
  23. Протокол управления контекстом
  24. Оператор морж в Python 3.8
  25. Принципы LSP и ISP в Python
  26. Создание циклической ссылки
  27. Явный импорт в Python
  28. Combobox в Tkinter
  29. Сравнение строк в Python
  30. Особенности запятых в Python
  31. Функции с необязательными аргументами
  32. Область видимости переменных
  33. Функция product() в Python
  34. CLI-инструмент howdoi
  35. Принципы программирования
  36. Подсказки типов в Python
  37. Фильтрация последовательности
  38. Вывод с переменной через запятую
  39. Проверка типов с использованием isinstance
  40. Python Translator: создание локальных переводчиков
  41. Возврат значений из генератора
  42. Метод __call__ в Python
  43. Аннотации типов в Python
  44. Работа с множествами в Python
  45. Генераторы в Python
  46. Работа со стеком в Python
  47. Метод округления чисел

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