Курс 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"
- Аргументы *args и **kwargs
- Установка максимального количества цифр
- Основы работы с базами данных в Python
- Метод rsub в Python: расширение функциональности вычитания
- Создание спинбокса в tkinter
- Обработка исключений в Python
- Переопределение оператора % для объектов
- Получение текущего времени в Python
- Применение функции map() в Python
- Работа с модулем random
- Область видимости переменных в Python
- Выход из профиля в Django
- Замер времени выполнения кода
- Проверка условий: all и any
- Возвращение нескольких значений
- Подчеркивание в REPL
- Запрос пароля с помощью getpass
- Методы classmethod и staticmethod
- Нарезка списков в Python
- Декораторы с аргументами
- Округление банкира в Python
- Функции высшего порядка в Python
- Структурирование данных с Pydantic
- Удаление элементов во время итерации
- Поиск кода
- Инициализация структур данных
- Определение индекса элемента списка
- Получение обратного списка чисел
- Метод lt для сортировки объектов
- Блок try-except-else
- JSON в Python: модуль, dump, dumps, load
- Избегайте ошибку FileNotFoundError
- Тип данных TypeVarTuple
- Работа с файлами в Python
- Преобразование вложенного списка
- Удаление дубликатов из списка с помощью dict.fromkeys
- Bootle — простой веб-фреймворк
- Ускоренный импорт библиотек
- Декодирование строк в Python
- Сравнение неупорядоченных списков
- Решатель судоку на Python с pygame
- Логирование с Loguru
- Работа с GitHub в Telegram
- Создание инструмента обнаружения плагиата
- Генерация чисел с range()















