Курс 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"
- Структура данных deque в Python
- Метод Enumerate() для списков
- Генераторы списков
- Хранение данных с помощью dataclasses
- Объединение коллекций в Python
- Библиотека sh: использование команд bash в Python
- Преобразование символов с помощью map
- Возвращение нескольких значений через кортеж или класс
- Обработка ошибок в Python
- Использование html-скриптов в Jupyter Notebook
- Руководство по Pymorphy2
- Преобразование списков в словарь
- Проектирование Singleton с метаклассом
- Описание скриптов в README
- Сортировка HTML-элементов
- Создание треугольника Паскаля
- Анонимные функции Lambda
- Управление пакетами с pip
- Enum в Python
- Декодирование байтов в строку
- Отладчик pdb: начало работы
- Удаление файлов с shutil.os.remove()
- Извлечение новостей с newspaper3k
- Определение объема памяти объекта
- Генераторы в Python
- Создание списков в Python
- Разделение строки на подстроки в Python
- Создание таблиц в Python с PrettyTable
- Проверка списка: any() и all()
- Работа со строками в Python
- Метод join для объединения строк
- Функция zip() в Python
- Декораторы в Python
- Запуск внешнего кода в Jupyter
- Преобразование данных в Python
- Python Поверхностное Копирование
- Функция pow() — возвести число в степень
- Открытие, чтение и закрытие файла
- Обход словаря в Python
- Мощь вложенных функций в Python
- Протокол управления контекстом
- Определение основы слова с showballstemmer
- Уникальность ключей в словаре
- Работа с контекстными менеджерами
- Декоратор total_ordering для класса Point















