В Python циклы for
и while
могут содержать блок else
, который выполнится, только если цикл завершится без применения break
.
Рассмотрим это на примере функции, ищущей иголку (needle) в стоге сена (haystack).
def contains(haystack, needle): """ Выбрасывает ValueError, если `needle` нет в `haystack`. """ for item in haystack: if item == needle: break else: # Блок `else` здесь запускается, только если # цикл доходит до конца без участия оператора `break`. raise ValueError('Needle not found') >>> contains([23, 'needle', 0xbadc0ffee], 'needle') None >>> contains([23, 42, 0xbadc0ffee], 'needle') ValueError: "Needle not found"