Else в заявлении try... что это хорошо для
Возможный дубликат:
Python try-else
Исходя из фона Java, я не совсем понимаю, что такое предложение else
.
В соответствии с документами
Это полезно для кода, который должен быть выполняется, если предложение try не вызывать исключение.
Но почему бы не поместить код после блока try? Кажется, что я здесь что-то не так важно...
Ответы
Ответ 1
Предложение else
полезно, потому что вы знаете, что код в пакете try
был успешным. Например:
for arg in sys.argv[1:]:
try:
f = open(arg, 'r')
except IOError:
print 'cannot open', arg
else:
print arg, 'has', len(f.readlines()), 'lines'
f.close()
Вы можете безопасно выполнять операции над f
, поскольку вы знаете, что его присвоение выполнено успешно. Если код был просто после попытки... кроме, у вас может не быть f
.
Ответ 2
Рассмотрим
try:
a = 1/0
except ZeroDivisionError:
print "Division by zero not allowed."
else:
print "In this universe, division by zero is allowed."
Что произойдет, если вы поместите второй print
вне блока try/except/else
?
Ответ 3
Это код, который вы хотите выполнить, только если не было создано никакого исключения.