Курс 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"
- Преобразование Excel в PDF с Spire.XLS
- Построение графиков в Matplotlib
- Поиск индекса элемента
- Проблема с изменяемыми аргументами
- Приближение чисел в Python
- Закрытие файла в Python
- Функция enumerate() — Python
- Объединение множеств в Python
- Определение имен функций
- Запуск внешнего кода в Jupyter
- None в Python: использование и особенности
- Сравнение def и lambda в Python
- Операции с кортежами
- Срезы в Python
- Поиск частого элемента
- Python Поверхностное Копирование
- Умножение строк и списков
- Фильтрация элементов с помощью islice
- Поиск шаблона в строке
- Метод is_absolute() для PurePath
- Проекты на Python
- Возведение в квадрат с помощью itertools
- Метод join() для объединения элементов строки
- Экранирование символов в Python
- Форматирование данных с помощью pprint
- Beautiful Soup — извлечение данных из HTML
- Подчеркивание в REPL
- Игра Виселица на Python
- Метод __float__ в Python
- Работа с пользовательским вводом
- Присоединение элементов коллекции
- Срезы в Numpy
- Управление виртуальными средами в Python
- Однострочники Python
- Названия переменных
- Сглаживание списка
- Оптимизация памяти в Python
- Метод pos в Python
- Декоратор @override
- Переопределение метода __or__()
- Преобразование числа в восьмеричную строку
- Работа с deque в Python
- Установка и обучение ChatterBot
- ROT13 Шифр Цезаря в Python
- Обработка ошибок в JSON данных
- Преобразование чисел в восьмеричную строку















