Курс 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"
- Метод __imod__ для Python
- Переменная с нижним подчеркиванием
- Передача неизвестных аргументов в Python.
- Оператор break в Python
- Удаление falsy-значений из списка с помощью filter
- Реверс строки и списка в Python.
- Создание GUI на Tkinter
- Python enumerate() функции
- Анализ текста на русском языке с помощью Pymystem3
- Метод get для словарей
- Создание детектора плагиата
- Итераторы в Python
- Функции map() и reduce() в Python
- Переменные в Python: сокращение гласных
- Генераторы списков
- Поиск шаблона в начале строки
- Codecademy в Telegram
- discard() — удаление элемента из множества
- Python Enumerate
- Методы HTTP запросов в Flask
- Извлечение аудио из видео
- Python Тесты и Гайды
- Замер времени выполнения кода
- Определение основы слова с showballstemmer
- Функция __init__ в Python
- Удаление файлов в Python
- Создание даты из строки ISO
- Работа с комплексными числами
- Работа с файлами и директориями в Python.
- Запуск Python из интерпретатора
- Цикл for в Python
- Defaultdict в Python
- Визуализация пропусков данных
- Работа с датой и временем в Python
- Лямбда-функции в Python
- Метод сравнения объектов в Python
- Запуск внешних программ с subprocess
- Генераторы в Python
- Метод difference_update() — разность множеств
- Получение текущей директории
- Профилирование с Pandas
- Метод __int__ в Python
- Поиск частых элементов в списке
- Подсчет количества элементов в списке
- Получение комбинаций в Python
- Переопределение метода delitem в Python















