Курс 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"
- Оператор in для проверки наличия элемента
- Python groupby() из itertools: работа с повторяющимися элементами
- Метод invert для побитового отрицания
- Перевод текста с Python Translator
- GitHub в Telegram: подписка на уведомления
- Сортировка данных в Python
- Функции range() в Python
- Работа с модулем glob в Python
- Объединение списков в Python
- Принципы LSP и ISP в Python
- Преобразование данных в Python
- Форматирование строк с % в Python
- Функция enumerate в Python
- Создание новых функций с помощью functools.partial
- Генерация случайных чисел в Python
- Роль object и type в Python
- Метод radd для пользовательских чисел
- Проверка вхождения подстроки
- Ускоренный импорт библиотек
- Регистрация на TenChat
- Удаление falsy-значений из списка с помощью filter
- Работа с комплексными числами в Python
- Сортировка слиянием
- Открытие, чтение и закрытие файла
- Упрощение условных выражений с тернарным оператором
- Создание словаря в Python
- Обучение модели с указанием эпох
- Поиск с помощью регулярных выражений
- Преобразование чисел в Python
- Функция zip() в Python
- Нарезка списков в Python
- Очистка данных в Python
- Генераторы в Python
- Python: цикл for и оператор присваивания
- Разрешение имен в Python
- Преобразование списков в словарь
- Функция rsplit() в Python
- Функции min(), max(), sum()
- Работа с комплексными числами
- Создание виртуальной среды
- Изменение переменной в Python: nonlocal
- Руководство по Pymorphy2
- Функция __init__ в Python
- Форматирование данных с pprint
- Генераторы в Python
- Блок else в циклах Python















