Курс 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. Роль ключевого слова self
  2. Функции all() и any() в Python
  3. Основы Python за 14 дней
  4. Python: отличительная особенность — отступы
  5. Использование двоеточия в Python
  6. Обработка данных в Python
  7. Делегирование в Python
  8. Перевод двоичного кода в целое число
  9. Применение функции map() с лямбда-функциями
  10. Приоритет операций в Python
  11. Обработка исключений в Python
  12. Сложные типы данных в Python
  13. Генератор списка с условием if
  14. Генерация резюме в Gensim
  15. Функциональное программирование.
  16. Python itertools combinations() — группировка элементов
  17. Отправка POST запроса на сервер.
  18. Выход из профиля в Django
  19. Документирование функций в Python
  20. Функция findall() для поиска вхождений строки
  21. Функция zip() — объединение последовательностей
  22. Методы split() и join() — Python строк.
  23. Обработка аргументов Python
  24. Деление в Python
  25. Метод __float__ в Python
  26. IPython и Jupyter Notebook: руководство
  27. Импорт в Python: список all
  28. Возвращение нескольких значений
  29. Удаление элемента по индексу
  30. Итерация по коллекции в Python
  31. Функции any() и all() в Python
  32. Объединение словарей в Python
  33. capitalize() — изменение регистра первого символа строки
  34. Инверсия списка/строки в Python
  35. Частичное совпадение ввода
  36. Декодирование байтов в строку
  37. Операции с числами в Python
  38. globals и locals
  39. Создание .exe файла с pyinstaller
  40. Дефолтные параметры в Python
  41. Синхронизация потоков с time.sleep()
  42. Создание пользовательской коллекции в Python
  43. Python: Splat-оператор и splatty-splat
  44. Создание задания в Cron
  45. Встраивание HTML в Jupyter Notebook
  46. Преобразование списка в словарь через генератор
  47. Работа с IP-адресами в Python
  48. Howdoi — получение ответов из терминала

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