Курс 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. Вычисление натурального логарифма в NumPy
  2. Python itertools combinations() — группировка элементов
  3. Работа с базами данных SQLite
  4. Группировка элементов Python
  5. Оператор деления для класса Rational
  6. Метод __complex__ в Python
  7. Python и Монти Пайтон
  8. Генераторы данных
  9. Структура данных словарь в Python
  10. Сглаживание списка
  11. Определение объема памяти объекта
  12. Философия Python
  13. None в Python: использование и особенности
  14. Проверка версии Python
  15. Безопасный доступ к значениям словаря
  16. Функция product() из itertools
  17. Проверка памяти объекта
  18. Установка и использование emoji
  19. Создание GUI на Tkinter
  20. Транспонирование 2D-массива с помощью zip
  21. Работа с deque из collections
  22. Создание директории в Python
  23. Перемещение и удаление файлов в Python
  24. Numpy: использование Ellipsis
  25. Оптимизация гиперпараметров с Scikit Optimize
  26. Переменные в Python
  27. Получение комбинаций в Python
  28. Создание коллекций из генератора
  29. Уникальность ключей в словаре
  30. Любовь к Python
  31. Операции с числами в Python
  32. Бинарный поиск
  33. Замена подстроки
  34. Проверка однородности элементов списка
  35. Измерение времени выполнения кода
  36. Преобразование строк в числа с плавающей запятой
  37. Создание GUI с Tkinter: Entry
  38. Многопроцессорное программирование в Python
  39. Работа с датой и временем в Python
  40. Циклы for в Python
  41. Метод Event.wait() в Python
  42. Применение функций в Python
  43. Управление контекстом с помощью декоратора contextmanager
  44. Генерация строк с .join()
  45. Комментарии в Python.

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