Курс 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. Изменение IP-адреса в Python
  2. Работа с датами в Python
  3. Преобразование текста в нижний регистр
  4. Работа с YAML в Python: PyYAML.
  5. Управление асинхронными задачами с помощью Semaphore
  6. Цикл while в Python
  7. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  8. Склеивание строк через метод join()
  9. Управление контекстом выполнения кода
  10. Функция product() в Python
  11. Оптимизация гиперпараметров в Python
  12. Работа с GitHub в Telegram
  13. Метод pop() списка
  14. Оператор @ для умножения матриц
  15. Удаление дубликатов из списка
  16. Получение значений из словарей
  17. Python enumerate() функции
  18. Defaultdict в Python
  19. Оптимизация памяти с __slots__
  20. Метод __ilshift__ для битового сдвига влево
  21. Присвоение значений переменным в Python
  22. Работа с функцией next() в Python
  23. Передача неизвестных аргументов в Python.
  24. Избегание изменяемых аргументов
  25. Проверка условий в Python
  26. Методы обработки строк в Python
  27. Pretty-printing JSON в Python
  28. Управление асинхронными задачами на Python.
  29. Библиотека Rich: форматирование текста
  30. Конкатенация строк с помощью join()
  31. Упрощение условных выражений с тернарным оператором
  32. Работа с классами данных
  33. Библиотека funcy: удобные утилиты
  34. Функция с *args.
  35. Возврат нескольких значений
  36. Очистка данных в Python
  37. capitalize() — изменение регистра первого символа строки
  38. Функции map, filter и reduce
  39. Генератор списка с условием if
  40. Применение функции map() в Python
  41. Python 3.12: переиспользование кавычек
  42. Удаление дубликатов из списка с помощью dict.fromkeys
  43. Работа с Path в Python
  44. Установка и обучение ChatterBot
  45. Условные выражения в Python
  46. Преобразование в float

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