Курс 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. Метод splitlines() для разделения строк
  2. Игра «Виселица» на Python
  3. Копирование файлов с shutil()
  4. %pinfo: получение информации об объекте
  5. discard() — удаление элемента из множества
  6. Наследование в программировании
  7. Многострочные комментарии в Python
  8. Преобразование числа в список цифр
  9. Строковое представление объектов
  10. Конкатенация строк в Python
  11. Рекурсия для обращения строки
  12. Конкатенация строковых литералов
  13. Списковое включение в Python
  14. Flask: создание веб-приложений
  15. Глубокое копирование объектов
  16. Сравнение неупорядоченных списков
  17. Progress с библиотекой tqdm
  18. Преобразование регистра строк
  19. Конкатенация строк с join() в Python
  20. Python Ellipsis использование
  21. Подчеркивание в REPL
  22. Обработка исключений в Python 3
  23. Объединение списков с помощью zip
  24. Функция __init__ в Python
  25. Работа со строками в Python
  26. Перевод эмодзи и эмотиконов.
  27. Метод ne для сравнения объектов
  28. Глобальные переменные в Python
  29. Установка и использование Virtualenv
  30. Управление контекстом выполнения кода
  31. Регистрация на хакатоне
  32. Различия символов в Python
  33. Поиск самого частого элемента
  34. Обязательные аргументы в Python
  35. Генерация чисел с range()
  36. Переопределение метода
  37. Управление памятью в numpy.
  38. Запуск асинхронной корутины
  39. Принципы SRP и OCP
  40. Передача аргументов в Python
  41. Модуль math: основные функции
  42. Просмотр атрибутов и методов класса
  43. Создание словарей в Python
  44. Вычисление разности множеств в Python
  45. Создание обратного итератора
  46. Получение имени функции с помощью inspect
  47. Оператор in и not in в Python
  48. Отправка POST-запроса в REST API
  49. Метод clear для коллекций

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