Питонический способ присвоения значений по умолчанию

Рассмотрим эту строку:

some_value = lst.attr[idx]

Здесь возможны две ошибки: attr может не существовать, а idx может быть вне допустимого диапазона.

Есть ли какой-нибудь элегантный способ сократить это утверждение? В идеале, примерно так:

some_value = lst.attr[idx] or default_value

(Не пытайтесь делать это дома. Это работает только для правильно определенных выражений, которые что-то оценивают.)

Конечно, я могу:

try:
    some_value = lst.attr[idx]
except:
    some_value = default_value

Но что, если я в контекст задания? Например:

print [x.attr[idx] for x in y]

Какой питонический способ обрабатывать ошибки и назначать значения по умолчанию в этом случае?

15
задан Yuval Adam 30 November 2011 в 10:50
поделиться