Курс 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"
- Строковое представление объектов
- Объединение словарей в Python
- Тайное преобразование типа ключа
- Функция product() в Python
- Списки в Python
- Управление виртуальными средами в Python
- Определение имен функций
- Установка User-Agent в Python
- Переворот последовательности
- Генераторы списков в Python
- Метод bool() в Python
- Работа с JSON в Python
- Создание Radio кнопок в tkinter
- Метод join() для объединения строк
- Хэш-функции и метод цепочек
- Работа с кортежами в Python
- Python Ellipsis использование
- Базовые объекты Python
- Именованные кортежи в Python
- Создание веб-приложения с Flask
- Работа с кортежами
- Обмен значений переменных в Python
- Метод split() в Python
- Работа с итераторами в Python
- Оптимизация памяти с __slots__
- Python: цикл for и оператор присваивания
- Сравнение строк в Python
- Python 3.12: Псевдонимы типов
- Работа с атрибутом dict
- Сортировка данных с лямбда-функциями
- Многострочные строки в Python
- Декораторы с аргументами
- Обратное распространение ошибки
- Progress с библиотекой tqdm
- Работа с WindowsPath()
- Обмен значений переменных в Python
- Решение переменной Шредингера
- Операторы Splat и splatty-splat
- Запуск асинхронной корутины
- Форматирование кода на Python
- Установка Home Assistant
- Работа с множествами в Python
- Вызов функций по строке в Python.
- Экранирование символов в Python















