Курс 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"
- Colorama: окрашивание текста в Python
- Преобразование генераторов в циклы
- Создание списка дат
- Логирование с Loguru
- Операторы объединения в Python 3.9
- Решение переменной Шредингера
- Операции со строками в Python
- Игра «Камень, ножницы, бумага» — Python
- Основы Python за 14 дней
- Отрицательные индексы списков в Python
- Оформление кода на Python
- Замена переменных в Python
- Документация функции help() в Python
- Удаление символов новой строки в Python.
- Путь к интерпретатору Python
- Оператор in для проверки наличия элемента
- Транспонирование 2D-массива с помощью zip
- Создание множества в Python
- Атрибуты класса и экземпляра
- Фильтрация списков с itertools
- Тип CodeType в Python.
- Функция map() и ленивая оценка
- Протокол управления контекстом
- Оператор морж в Python 3.8
- Принципы LSP и ISP в Python
- Создание циклической ссылки
- Явный импорт в Python
- Combobox в Tkinter
- Сравнение строк в Python
- Особенности запятых в Python
- Функции с необязательными аргументами
- Область видимости переменных
- Функция product() в Python
- CLI-инструмент howdoi
- Принципы программирования
- Подсказки типов в Python
- Фильтрация последовательности
- Вывод с переменной через запятую
- Проверка типов с использованием isinstance
- Python Translator: создание локальных переводчиков
- Возврат значений из генератора
- Метод __call__ в Python
- Аннотации типов в Python
- Работа с множествами в Python
- Генераторы в Python
- Работа со стеком в Python
- Метод округления чисел















