Курс 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. Работа с JSON данными в Python
  2. Нан-рефлексивность в Python
  3. Цикл for в Python
  4. Проверка подстроки в строке с помощью in
  5. Метод rsub для пользовательских чисел
  6. Переворот списка в Python
  7. Счетчик ссылок в Python
  8. Комментарии в Python
  9. Вычисление разности множеств в Python
  10. Вывод баннеров
  11. Профилирование данных с Pandas.
  12. Округление чисел с помощью round
  13. Изменение логики работы с временем
  14. Проверка условий в Python
  15. Создание тестовых данных с Faker
  16. Структуры данных в Python
  17. Преобразование range в итератор
  18. Расширение операции побитового «и» в Python
  19. Установка и обучение ChatterBot
  20. Динамическая типизация в Python
  21. Форматирование строк в Python
  22. Моржовый оператор в Python 3.8
  23. Просмотр атрибутов и методов класса
  24. Генераторы в Python
  25. Форматирование строк с % в Python
  26. Работа с модулем Calendar
  27. Запрос пароля с помощью getpass
  28. Работа с датами в Python
  29. Расчет времени выполнения
  30. Цикл for в Python
  31. Область видимости переменных
  32. Удаление специальных символов
  33. Условные выражения в Python
  34. Генерация UUID в Python
  35. Операторы сравнения в Python
  36. Сортировка и разворот списка
  37. Ускорение выполнения кода в Python
  38. Преобразование объекта в строку
  39. Обработка исключений в Python
  40. Конвертация коллекций в Python.
  41. Генератор чисел Фибоначчи
  42. Обновление данных через PUT запрос
  43. Распаковка элементов массива
  44. Рекурсия для обращения строки
  45. Получение текущей даты и времени с помощью datetime
  46. Подсчет элементов в Python

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