Курс 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"
- Роль ключевого слова self
- Функции all() и any() в Python
- Основы Python за 14 дней
- Python: отличительная особенность — отступы
- Использование двоеточия в Python
- Обработка данных в Python
- Делегирование в Python
- Перевод двоичного кода в целое число
- Применение функции map() с лямбда-функциями
- Приоритет операций в Python
- Обработка исключений в Python
- Сложные типы данных в Python
- Генератор списка с условием if
- Генерация резюме в Gensim
- Функциональное программирование.
- Python itertools combinations() — группировка элементов
- Отправка POST запроса на сервер.
- Выход из профиля в Django
- Документирование функций в Python
- Функция findall() для поиска вхождений строки
- Функция zip() — объединение последовательностей
- Методы split() и join() — Python строк.
- Обработка аргументов Python
- Деление в Python
- Метод __float__ в Python
- IPython и Jupyter Notebook: руководство
- Импорт в Python: список all
- Возвращение нескольких значений
- Удаление элемента по индексу
- Итерация по коллекции в Python
- Функции any() и all() в Python
- Объединение словарей в Python
- capitalize() — изменение регистра первого символа строки
- Инверсия списка/строки в Python
- Частичное совпадение ввода
- Декодирование байтов в строку
- Операции с числами в Python
- globals и locals
- Создание .exe файла с pyinstaller
- Дефолтные параметры в Python
- Синхронизация потоков с time.sleep()
- Создание пользовательской коллекции в Python
- Python: Splat-оператор и splatty-splat
- Создание задания в Cron
- Встраивание HTML в Jupyter Notebook
- Преобразование списка в словарь через генератор
- Работа с IP-адресами в Python
- Howdoi — получение ответов из терминала















