Что делает else у цикла for/while?
Увидел в чужом коде такое:
for x in data:
if x == target:
break
else:
print('не найдено')
else относится к for?? Я думал else только у if бывает. Как это работает?
4 ответа
Да, у for и while есть свой else. Он выполняется, если цикл завершился нормально, то есть без break.
В твоём примере: если нашли target и сделали break — блок else пропускается. Если прошли весь список и ни разу не сорвались через break — выполнится print('не найдено').
Удобно как раз для поиска: «прошли всё и не нашли». Мнемоника: читай не как else, а как nobreak — «если не было break».
Срабатывает, когда цикл дошёл до конца без break.
else у цикла выполняется всегда, если цикл не был прерван оператором break. То есть else срабатывает, когда цикл завершился нормально, а не досрочно через break.
else у цикла выполняется всегда после него, как обычный блок.