Курс 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"
- Создание объекта timedelta
- Обмен переменными в Jupyter
- Класс Counter() для подсчета элементов
- Namedtuple в Python
- Операторы увеличения и уменьшения переменной
- Считывание бинарного файла в Python
- Удаление специальных символов
- Проектирование Singleton с метаклассом
- Поиск простых чисел
- Создание и обучение модели с Keras
- Очистка данных с помощью pandas
- Разрешение имен в Python
- Проверка типов с использованием isinstance
- Форматирование вывода списков
- Использование html-скриптов в Jupyter Notebook
- Логирование с Logzero
- Операции с числами в Python
- Порядок и длина множеств в Python
- ChainMap избыточные ключи
- Отступы в Python
- Pillow: работа с изображениями
- Списковое включение в Python
- Форматирование вывода с F-строками
- Форматирование строк в Python
- Возврат значений из генератора
- Автоматизация с Python
- Преобразование чисел в Python
- Создание Telegram-бота на Python
- Анонимные функции в Python
- Создание GUI с Tkinter: Entry
- Частичное совпадение пользовательского ввода в Python 3.10
- Генераторы в Python
- Изменение объектов в Python
- Непрерывная проверка в Python
- Хешируемые ключи в Python
- Разность множеств
- Создание списков в Python
- Работа с файлами в Python
- Профилирование кода
- Замена атрибута в именованном кортеже
- Пересечение списков с использованием множеств
- Метод radd для пользовательских чисел
- Тестирование с responses
- Поиск подстроки в строке
- Работа с кортежами в Python
- Работа с GitHub в Telegram
- Показ всплывающих окон Tkinter
- Сравнение def и lambda-функций
- Создание таблиц в терминале с PrettyTable















