Очевидно, что последний способ сделать это более лаконичен и предпочтителен многими программистами, такими как вы.
Хотя сам по себе язык не обеспечивает «однострочную попытку-за исключением-поймать» по каким бы то ни было причинам, все хорошо и необходимо, я полагаю, вы, как правило, можете добиться этого, немного изменив программу; как например:
try:
a_var = a_dict.get('abcd')
except a_dict.KeyError:
a_var = ''
в
a_var = a_dict.get('abcd',default='')
и аналогично для запросов к БД;
try:
a_qs = Model.objects.get(id=42)
except Model.DoesNotExist:
a_qs = Model.objects.create(id=42)
с
a_qs = Model.objects.get_or_create(id=42,**kwargs)
и добавляйте подобные API в свои собственные программы, где это возможно. try-exception довольно «дешевый» в Python, и программирование на основе исключений предпочтительнее, чем «проверка в первую очередь», обычно предлагаемая в Java-подобных языках, из-за дорогостоящего характера обработки исключений. Таким образом, вам лучше обернуть эту «цепляющую вещь» в метод / функцию и вызывать ее везде, как, например, dict и другие конструкции.