Курс 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. Непрерывная проверка в Python
  3. Работа со случайными элементами
  4. Сортировка и разворот списка
  5. Запуск файлового сервера
  6. Работа с CSV файлами
  7. Использование метода lower()
  8. Замена текста в Python
  9. Извлечение аудио из видео
  10. Разделение строк в Python
  11. Объединение строк с помощью метода join
  12. Регистрация на TenChat
  13. Вывод символов строки в Python
  14. Форматирование вывода списков
  15. Установка User-Agent в Python
  16. Проверка списка: any() и all()
  17. Генераторы в Python
  18. Создание таблиц в Python с PrettyTable
  19. Генераторные функции в Python
  20. Повторение элементов в Python
  21. Сравнение объектов в Python
  22. Работа с географическими данными.
  23. Работа с типами данных в Python с помощью pydantic.
  24. Работа с итераторами через срезы
  25. Методы classmethod и staticmethod
  26. Присвоение и ссылки
  27. Функция с *args.
  28. Ускорение обработки данных с %autoawait
  29. Получение текущей даты в Python
  30. Работа с байтовыми строками в Python
  31. Преобразование символов в нижний регистр
  32. Работа с модулем glob в Python
  33. Декораторы в Python
  34. Python: Splat-оператор и splatty-splat
  35. Декоратор total_ordering для сравнения объектов
  36. Декораторы в Python
  37. Принцип одной функции
  38. Конвертация коллекций в Python
  39. Обработка исключений с блоком else
  40. Конкатенация строк в Python
  41. Взаимодействие с sys
  42. Поток данных в Python
  43. Метод append() для списка
  44. Отступы в Python
  45. Python Метод sleep() из time
  46. Логические значения в Python
  47. Список переменных с %who

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