Курс 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. Создание объекта timedelta
  2. Обмен переменными в Jupyter
  3. Класс Counter() для подсчета элементов
  4. Namedtuple в Python
  5. Операторы увеличения и уменьшения переменной
  6. Считывание бинарного файла в Python
  7. Удаление специальных символов
  8. Проектирование Singleton с метаклассом
  9. Поиск простых чисел
  10. Создание и обучение модели с Keras
  11. Очистка данных с помощью pandas
  12. Разрешение имен в Python
  13. Проверка типов с использованием isinstance
  14. Форматирование вывода списков
  15. Использование html-скриптов в Jupyter Notebook
  16. Логирование с Logzero
  17. Операции с числами в Python
  18. Порядок и длина множеств в Python
  19. ChainMap избыточные ключи
  20. Отступы в Python
  21. Pillow: работа с изображениями
  22. Списковое включение в Python
  23. Форматирование вывода с F-строками
  24. Форматирование строк в Python
  25. Возврат значений из генератора
  26. Автоматизация с Python
  27. Преобразование чисел в Python
  28. Создание Telegram-бота на Python
  29. Анонимные функции в Python
  30. Создание GUI с Tkinter: Entry
  31. Частичное совпадение пользовательского ввода в Python 3.10
  32. Генераторы в Python
  33. Изменение объектов в Python
  34. Непрерывная проверка в Python
  35. Хешируемые ключи в Python
  36. Разность множеств
  37. Создание списков в Python
  38. Работа с файлами в Python
  39. Профилирование кода
  40. Замена атрибута в именованном кортеже
  41. Пересечение списков с использованием множеств
  42. Метод radd для пользовательских чисел
  43. Тестирование с responses
  44. Поиск подстроки в строке
  45. Работа с кортежами в Python
  46. Работа с GitHub в Telegram
  47. Показ всплывающих окон Tkinter
  48. Сравнение def и lambda-функций
  49. Создание таблиц в терминале с PrettyTable

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