Загружаем изображение…
Автозаполнение словаря без 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 | #совет