Курс 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"

  1. Преобразование Excel в PDF с Spire.XLS
  2. Построение графиков в Matplotlib
  3. Поиск индекса элемента
  4. Проблема с изменяемыми аргументами
  5. Приближение чисел в Python
  6. Закрытие файла в Python
  7. Функция enumerate() — Python
  8. Объединение множеств в Python
  9. Определение имен функций
  10. Запуск внешнего кода в Jupyter
  11. None в Python: использование и особенности
  12. Сравнение def и lambda в Python
  13. Операции с кортежами
  14. Срезы в Python
  15. Поиск частого элемента
  16. Python Поверхностное Копирование
  17. Умножение строк и списков
  18. Фильтрация элементов с помощью islice
  19. Поиск шаблона в строке
  20. Метод is_absolute() для PurePath
  21. Проекты на Python
  22. Возведение в квадрат с помощью itertools
  23. Метод join() для объединения элементов строки
  24. Экранирование символов в Python
  25. Форматирование данных с помощью pprint
  26. Beautiful Soup — извлечение данных из HTML
  27. Подчеркивание в REPL
  28. Игра Виселица на Python
  29. Метод __float__ в Python
  30. Работа с пользовательским вводом
  31. Присоединение элементов коллекции
  32. Срезы в Numpy
  33. Управление виртуальными средами в Python
  34. Однострочники Python
  35. Названия переменных
  36. Сглаживание списка
  37. Оптимизация памяти в Python
  38. Метод pos в Python
  39. Декоратор @override
  40. Переопределение метода __or__()
  41. Преобразование числа в восьмеричную строку
  42. Работа с deque в Python
  43. Установка и обучение ChatterBot
  44. ROT13 Шифр Цезаря в Python
  45. Обработка ошибок в JSON данных
  46. Преобразование чисел в восьмеричную строку

Marketello читают маркетологи из крутых компаний