Курс 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"
- Метод splitlines() для разделения строк
- Игра «Виселица» на Python
- Копирование файлов с shutil()
- %pinfo: получение информации об объекте
- discard() — удаление элемента из множества
- Наследование в программировании
- Многострочные комментарии в Python
- Преобразование числа в список цифр
- Строковое представление объектов
- Конкатенация строк в Python
- Рекурсия для обращения строки
- Конкатенация строковых литералов
- Списковое включение в Python
- Flask: создание веб-приложений
- Глубокое копирование объектов
- Сравнение неупорядоченных списков
- Progress с библиотекой tqdm
- Преобразование регистра строк
- Конкатенация строк с join() в Python
- Python Ellipsis использование
- Подчеркивание в REPL
- Обработка исключений в Python 3
- Объединение списков с помощью zip
- Функция __init__ в Python
- Работа со строками в Python
- Перевод эмодзи и эмотиконов.
- Метод ne для сравнения объектов
- Глобальные переменные в Python
- Установка и использование Virtualenv
- Управление контекстом выполнения кода
- Регистрация на хакатоне
- Различия символов в Python
- Поиск самого частого элемента
- Обязательные аргументы в Python
- Генерация чисел с range()
- Переопределение метода
- Управление памятью в numpy.
- Запуск асинхронной корутины
- Принципы SRP и OCP
- Передача аргументов в Python
- Модуль math: основные функции
- Просмотр атрибутов и методов класса
- Создание словарей в Python
- Вычисление разности множеств в Python
- Создание обратного итератора
- Получение имени функции с помощью inspect
- Оператор in и not in в Python
- Отправка POST-запроса в REST API
- Метод clear для коллекций















