Автор: 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
позволяет более гибко управлять потоком выполнения.