Пока ваш подход читабелен, вы можете рассмотреть следующее:
Предупреждение?
bar
будет установлено на None
, если KeyError
также встречается внутри функции:
data = {'buzz': 1}
def foo(x):
abc_value = <b>data['abc']</b> # this raises a `KeyError` inside function `foo`.
try:
bar = foo(data['buzz']) # data is a dict
except KeyError:
bar = None
print(bar)
# None
Решение:
Лучший способ избежать этого - избегать использования try-except
, поскольку его область также вложена :
if "buzz" in data:
bar = foo(data["buzz"])
else:
bar = None
Еще больше питонически в одну строку:
bar = foo(data["buzz"]) if "buzz" in data else None