Курс 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. Использование подчеркивания в REPL
  3. Копирование файлов с shutil()
  4. Перегрузка операторов в Python
  5. Преобразование списка в словарь через генератор
  6. Область видимости переменных
  7. Добавление Progressbar в Python
  8. globals и locals
  9. Модуль future Python
  10. Перехват исключений в Python
  11. Подсчет элементов с помощью Counter
  12. Экспорт функций в Python
  13. Переворот последовательности
  14. Работа с итераторами в Python
  15. Функция enumerate() в Python
  16. Метод pos в Python
  17. Переменная с нижним подчеркиванием
  18. 9 уловок для чистого кода
  19. Функции map, filter и reduce
  20. Генератор списка с условием if
  21. Создание объекта timedelta
  22. Создание комплексных чисел
  23. Проверка версии Python
  24. Работа с GitHub в Telegram
  25. Конкатенация строк с помощью join()
  26. Применение функции map() с лямбда-функциями
  27. Счетчик ссылок в Python
  28. Работа с геоданными с помощью geopy
  29. Метод join() для объединения элементов
  30. Retrying в Python: повторные вызовы
  31. Beautiful Soup — извлечение данных из HTML
  32. Декоратор Ajax required
  33. Установка и использование Logzero
  34. ChainMap избыточные ключи
  35. Чтение и запись TOML-конфигов
  36. Основы работы со списками
  37. Присвоение значений переменным в Python
  38. Метод rxor для операции побитового исключающего «или»
  39. Генераторы в Python
  40. Принципы Zen Python
  41. Тернарный оператор в Python
  42. Безопасный доступ к значениям словаря
  43. Инициализация переменных
  44. Конкатенация строк с методом join()
  45. Управление User-Agent в Python
  46. Переменные в Python: сокращение гласных
  47. Удаление ключа из словаря
  48. Создание спинбокса в tkinter

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