Курс 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
- Выборка чисел
- Работа с PosixPath() в Python
- Работа с модулем random
- Переменная с нижним подчеркиванием
- Codecademy в Telegram
- Область видимости переменных
- Декораторы в Python
- Функции с дополнением
- Любовь к Python
- Работа со словарями Python
- Работа с файлами в Python
- Удаление дубликатов из списка с помощью dict.fromkeys
- Работа с байтовыми строками в Python
- Удаление элементов из списка в Python
- Структура строк в Python
- Форматирование объектов с модулем pprint
- Декоратор для группы пользователей в Django
- Работа с getopt
- Импорт с альтернативным именем
- Преобразование документов в PDF с помощью Spire.Office
- Python: отсутствие точек с запятыми
- Профилирование данных с Pandas
- Непрерывная проверка в Python
- Блок else в обработке исключений
- None в Python: использование и особенности
- Метод __call__ в Python
- Метод __iand__ для пользовательских классов
- Декоратор Ajax required
- Работа со строками в Python
- Работа с буфером обмена на Python
- Пропуск начальных строк с помощью dropwhile()
- Проекты на Python
- Функции классификации комплексных чисел
- Работа с многоуровневыми словарями в Python
- Класс UserDict: дополнительная функциональность
- Переменные в Python
- Оптимизация памяти с __slots__
- Срезы в Python
- Оператор assert в Python
- Описание скриптов в README
- Создание словарей в Python
- Удаление знаков препинания в Python
- Оформление текста в консоли с TermColor
- enumerate() в Python для работы с индексами
- Работа с индексами списков
- Оператор Walrus в Python 3.8















