Чем отличаются следующие вызовы: “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" или присутствии логически труёвого значения результат одинаковый.