Курс 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"
- Добавление элемента в список.
- Использование подчеркивания в REPL
- Копирование файлов с shutil()
- Перегрузка операторов в Python
- Преобразование списка в словарь через генератор
- Область видимости переменных
- Добавление Progressbar в Python
- globals и locals
- Модуль future Python
- Перехват исключений в Python
- Подсчет элементов с помощью Counter
- Экспорт функций в Python
- Переворот последовательности
- Работа с итераторами в Python
- Функция enumerate() в Python
- Метод pos в Python
- Переменная с нижним подчеркиванием
- 9 уловок для чистого кода
- Функции map, filter и reduce
- Генератор списка с условием if
- Создание объекта timedelta
- Создание комплексных чисел
- Проверка версии Python
- Работа с GitHub в Telegram
- Конкатенация строк с помощью join()
- Применение функции map() с лямбда-функциями
- Счетчик ссылок в Python
- Работа с геоданными с помощью geopy
- Метод join() для объединения элементов
- Retrying в Python: повторные вызовы
- Beautiful Soup — извлечение данных из HTML
- Декоратор Ajax required
- Установка и использование Logzero
- ChainMap избыточные ключи
- Чтение и запись TOML-конфигов
- Основы работы со списками
- Присвоение значений переменным в Python
- Метод rxor для операции побитового исключающего «или»
- Генераторы в Python
- Принципы Zen Python
- Тернарный оператор в Python
- Безопасный доступ к значениям словаря
- Инициализация переменных
- Конкатенация строк с методом join()
- Управление User-Agent в Python
- Переменные в Python: сокращение гласных
- Удаление ключа из словаря
- Создание спинбокса в tkinter















