Курс 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. Модуль Antigravity в Python 3
  2. Создание словаря и множества
  3. Создание комплексных чисел
  4. Методы работы со строками в Python
  5. Условные выражения в Python
  6. Структурирование данных с Pydantic
  7. Объединение словарей в Python
  8. Основы работы со списками
  9. Преобразование типов данных в set comprehension
  10. Модуль math: основные функции
  11. Декоратор total_ordering для класса Point
  12. Оптимизация интернирования строк
  13. Работа с модулем glob в Python
  14. Метод ne для сравнения объектов
  15. Метод join() для объединения элементов в строку.
  16. Получение текущей даты в Python
  17. Объединение списков в Python
  18. Обработка исключений в Python 3
  19. Операторы увеличения и уменьшения в Python
  20. Подсчет элементов в списке с Counter
  21. Область видимости переменных
  22. Namedtuple в Python
  23. Аннотации типов в Python
  24. Вложенные генераторы в Python
  25. Сортировка данных с лямбда-функциями
  26. Поиск шаблона в строке
  27. Проверка строки на палиндром
  28. SciPy: широкий функционал для математических операций
  29. Итераторы с потерямиZIP
  30. Синхронизация потоков с time.sleep()
  31. Работа с каталогами в Python
  32. Форматирование данных с помощью pprint
  33. Использование super() в Python
  34. Синтаксис переменных цикла в Python
  35. Создание уникального проекта
  36. Область видимости переменных в Python
  37. Генераторы в Python
  38. Подсчет элементов в Python
  39. Генераторы в Python
  40. Псевдонимы в Python
  41. Объединение, распаковка и деструктуризация
  42. Работа со строками в Python.
  43. Копирование словарей и списков в Python
  44. Функция zip() в Python
  45. OrderedDict — упорядоченный словарь
  46. Управление ресурсами с контекстными менеджерами

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