Автор: CoolPython
Рассмотрим пример использования ключевого слова else в цикле while:
>>> i = 1
>>> while i < 4:
... print(i)
... i += 1
... else:
... print('Вышли из цикла!')
Если выполнить этот цикл, то мы получим:
1 2 3 Вышли из цикла!
Здесь блок else выполняется только тогда, когда условие выхода из цикла перестает быть верным. Особенность здесь в том, что если вывалиться из цикла через break или через исключение, то блок else выполняться не будет.
Это работает не только с циклами while, но и с циклами for:
>>> for value in values:
... if value == 4:
... print('Нашли!:)')
... break
... else:
... print('Не нашли:(')
И так же можно с try-except блоками. На самом деле исключения в Python это не try-except-finally, а try-except-else-finally, ниже пример:
>>> num = 0
>>> try:
... result = 1 / num
... except ZeroDivisionError:
... print('Деление на ноль!')
... else:
... print('Конечное число.')
... finally:
... print('Вычисления закончены.')
...
Деление на ноль!
Вычисления закончены.
А если задать num = float('Inf'), то в результате деления мы получим 0 и вывод будет:
Конечное число. Вычисления закончены.
Блок finally выполняется в любом случае. А else можно использовать, если нужно выполнить еще какой-то код в случае отсутствия исключений. Например, это может быть полезно в тестах, когда мы хотим логировать, как в случае падения теста на исключении, так и в случае, если исключений брошено не было.
В общем, есть конструкции while-else и for-else, в которых else отрабатывает в случае «штатного» завершения цикла. Еще else можно использовать в try-except блоке, чтобы выполнить какой-то код только в случае успешного выполнения блока try. Во всех случаях использование else позволяет более гибко управлять потоком выполнения.
