Загружаем изображение…

Автозаполнение словаря без if и defaultdict!



Метод missing вызывается только при обращении к отсутствующему ключу через obj[key] и даёт точку централизованной логики:
cache = Cache()
print(cache[10]) # compute(10) вызовется один раз
print(cache[10]) # дальше берётся из dict


В отличие от defaultdict и setdefault, здесь можно писать любую логику (логировать, считать метрики, валидировать ключи или управлять ошибками).

Важно помнить, что missing не срабатывает при get(), setdefault(), in, обходе ключей и т.п. Работает только при индексировании obj[key]:
class Strict(dict):
def __missing__(self, key):
raise KeyError(f"Unexpected key: {key}")


__missing__ - простой и удобный способ научить словарь самому разбираться с отсутствующими ключами и убрать лишние проверки.

Python Ready | #совет
Просмотры: 234
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти