Курс 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. Метод __imod__ для Python
  2. Переменная с нижним подчеркиванием
  3. Передача неизвестных аргументов в Python.
  4. Оператор break в Python
  5. Удаление falsy-значений из списка с помощью filter
  6. Реверс строки и списка в Python.
  7. Создание GUI на Tkinter
  8. Python enumerate() функции
  9. Анализ текста на русском языке с помощью Pymystem3
  10. Метод get для словарей
  11. Создание детектора плагиата
  12. Итераторы в Python
  13. Функции map() и reduce() в Python
  14. Переменные в Python: сокращение гласных
  15. Генераторы списков
  16. Поиск шаблона в начале строки
  17. Codecademy в Telegram
  18. discard() — удаление элемента из множества
  19. Python Enumerate
  20. Методы HTTP запросов в Flask
  21. Извлечение аудио из видео
  22. Python Тесты и Гайды
  23. Замер времени выполнения кода
  24. Определение основы слова с showballstemmer
  25. Функция __init__ в Python
  26. Удаление файлов в Python
  27. Создание даты из строки ISO
  28. Работа с комплексными числами
  29. Работа с файлами и директориями в Python.
  30. Запуск Python из интерпретатора
  31. Цикл for в Python
  32. Defaultdict в Python
  33. Визуализация пропусков данных
  34. Работа с датой и временем в Python
  35. Лямбда-функции в Python
  36. Метод сравнения объектов в Python
  37. Запуск внешних программ с subprocess
  38. Генераторы в Python
  39. Метод difference_update() — разность множеств
  40. Получение текущей директории
  41. Профилирование с Pandas
  42. Метод __int__ в Python
  43. Поиск частых элементов в списке
  44. Подсчет количества элементов в списке
  45. Получение комбинаций в Python
  46. Переопределение метода delitem в Python

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