Курс Python → Раздувающийся словарь в Python

Раздувающийся экземпляр словаря — это явление, которое может наблюдаться при работе с Python. Когда мы создаем несколько словарей и выводим их содержимое, мы можем заметить, что они становятся все больше и больше. Почему это происходит? Дело в том, что в CPython используется оптимизация, позволяющая повторно использовать один и тот же объект «keys» в нескольких словарях. Это было введено в PEP 412 с целью экономии памяти, особенно в случаях, когда ключи словаря повторяются в разных экземплярах.

Оптимизация, позволяющая повторно использовать объект «keys», полностью работает для словарей, но может быть отключена, если нарушаются определенные допущения. Например, если происходит изменение ключей в словаре, то оптимизация может быть отключена, и словарь начнет «раздуваться». Это происходит потому, что CPython больше не может повторно использовать объект «keys» из-за изменений в структуре словаря.

example_dict1 = {'a': 1, 'b': 2}
example_dict2 = {'c': 3, 'd': 4}
print(example_dict1)
print(example_dict2)

В данном примере мы создаем два словаря example_dict1 и example_dict2, каждый из которых содержит пары ключ-значение. При выводе содержимого этих словарей, мы можем увидеть, как они могут «раздуться» из-за оптимизации, применяемой в CPython. Это явление может быть наблюдаемо при работе с большим количеством словарей или при изменении ключей в словаре.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Создание и операции с дробями
  2. Создание и использование модулей в Python
  3. Перевод текста с Python Translator
  4. Списки в Python: синтаксис представления
  5. Python Ellipsis использование
  6. Вывод с переменной через запятую
  7. Генераторы данных
  8. Логические операторы в Python
  9. Комментарии в Python.
  10. Синхронизация доступа к ресурсам
  11. Протокол управления контекстом
  12. Операторы объединения в Python 3.9
  13. Переменная Шредингера
  14. Обработка исключений в Python
  15. JMESPath в Python
  16. Возврат нескольких значений
  17. Генераторные функции в Python
  18. Создание функций высшего порядка
  19. Работа с датами в Python
  20. Работа с пакетами
  21. Pretty-printing JSON в Python
  22. Запуск Python из интерпретатора
  23. Печать календаря
  24. Преобразование списка в словарь через генератор
  25. Управление пакетами с pip
  26. Справка по импортированным модулям
  27. Работа с кортежами в Python
  28. Тестирование с responses
  29. Списки в Python: основы
  30. Сортировка HTML по CSS-селектору
  31. Расширение информации об ошибке в Python
  32. Декораторы для регистрации функций
  33. Оператор «моржа» (Walrus Operator)
  34. Просмотр атрибутов и методов класса
  35. Метод сравнения объектов в Python
  36. Вакансии в Nebius
  37. Функции с необязательными аргументами
  38. Работа с NumPy
  39. Управление IP-адресами через прокси
  40. Работа с асинхронными задачами в Python
  41. Фильтрация списка чисел
  42. Работа с WindowsPath()
  43. Открытие, чтение и закрытие файла
  44. Конкатенация строковых литералов
  45. Создание списка дат

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