Курс 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. Обход словаря в Python
  3. Выборка чисел
  4. Работа с PosixPath() в Python
  5. Работа с модулем random
  6. Переменная с нижним подчеркиванием
  7. Codecademy в Telegram
  8. Область видимости переменных
  9. Декораторы в Python
  10. Функции с дополнением
  11. Любовь к Python
  12. Работа со словарями Python
  13. Работа с файлами в Python
  14. Удаление дубликатов из списка с помощью dict.fromkeys
  15. Работа с байтовыми строками в Python
  16. Удаление элементов из списка в Python
  17. Структура строк в Python
  18. Форматирование объектов с модулем pprint
  19. Декоратор для группы пользователей в Django
  20. Работа с getopt
  21. Импорт с альтернативным именем
  22. Преобразование документов в PDF с помощью Spire.Office
  23. Python: отсутствие точек с запятыми
  24. Профилирование данных с Pandas
  25. Непрерывная проверка в Python
  26. Блок else в обработке исключений
  27. None в Python: использование и особенности
  28. Метод __call__ в Python
  29. Метод __iand__ для пользовательских классов
  30. Декоратор Ajax required
  31. Работа со строками в Python
  32. Работа с буфером обмена на Python
  33. Пропуск начальных строк с помощью dropwhile()
  34. Проекты на Python
  35. Функции классификации комплексных чисел
  36. Работа с многоуровневыми словарями в Python
  37. Класс UserDict: дополнительная функциональность
  38. Переменные в Python
  39. Оптимизация памяти с __slots__
  40. Срезы в Python
  41. Оператор assert в Python
  42. Описание скриптов в README
  43. Создание словарей в Python
  44. Удаление знаков препинания в Python
  45. Оформление текста в консоли с TermColor
  46. enumerate() в Python для работы с индексами
  47. Работа с индексами списков
  48. Оператор Walrus в Python 3.8

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