Курс 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"
- Обновление шаблона base.html
- Форматирование строк в Python
- Списковые включения в Python
- Основы Python за 14 дней
- Склеивание строк без циклов
- Роль object и type в Python
- Установка Git и AWS CLI
- Обработка данных в Python
- Делегирование в Python
- Переопределение метода __and__
- Эффективная конкатенация строк в Python
- Использование подчеркивания в REPL
- Безопасные SQL-запросы в Python 3.11
- Измерение времени выполнения кода
- Копирование объектов в Python
- Удаление дубликатов с помощью множеств
- Pillow: работа с изображениями
- Сравнение def и lambda функций в Python
- Функция __init__ в Python
- Лямбда-функции в defaultdict
- Разделение строки на пары ключ-значение.
- Цикл for в Python
- Функции с дополнением
- Работа с кортежами в Python
- Создание пар из последовательностей
- Python union() функция — объединение множеств
- Проверка окончания строки с помощью str.endswith()
- Поиск HTML-элементов с BeautifulSoup
- Модуль itertools: эффективная работа с итераторами
- JMESPath в Python
- Декораторы в Python
- Группировка элементов Python
- Создание коллекций из генератора
- Python Метод sleep() из time
- Определение имен функций
- Возведение в квадрат с помощью itertools
- Получение текущего времени в Python
- Замена текста с помощью sub
- Возврат значений из генератора
- Генерация чисел с range()
- ChainMap избыточные ключи
- Философия Python
- Сортировка и обратный порядок
- Оптимизация создания строк















