Чем отличаются следующие вызовы: “dict.get(a, {})” и “dict.get(a) or {}”?

Пусть dic - некоторый словарь, "a" - ключ, по которому мы хотим достать значение из этого словаря. Он может как присутствовать в словаре, так и отсутствовать.
Чем отличаются следующие вызовы: dic.get(a, {}) и dic.get(a) or {}?

В случае c dic.get(a, {}) вопросов нет.

А вот с dic.get(a) or {}, не могу уложить в голове, почему возращает {}, если ключа a нет в словаре?

Пример:

dic = {}
a = "key"

print(dic.get(a) or {})  # {}
print(dic.get(a, {}))    # {}

Заранее спасибо.


Ответы (1 шт):

Автор решения: eri

Применение print(dic.get(a) or {}) опасно в ситуациях когда dic = {"key":0}, и также "",False, (), [] и т.д. Результатом будет {} и это может нарушить логику или улучшить её. При отсутствии "key" или присутствии логически труёвого значения результат одинаковый.

→ Ссылка