Интуитивно понятное объяснение забытых в Python циклов for...else и while...else

Недавно я прочитал Забытый необязательный `else` в циклах Python. Судя по всему, Python позволяет добавлять необязательное else в конец for/while циклов. Это предложение else выполняется, когда цикл завершается нормально (т. е. без прерываний или возвратов).

i = 1

while i < 10:
  print(i)
  i += 1
else:
  print("Loop finished normally")

> output: 1 2 3 4 5 6 7 8 9 Loop finished normally

Первоначально это казалось неинтуитивным поведением, поскольку я ожидал, что else активируется, когда цикл сбой, т. е. в середине есть разрыв или возврат. Просматривая комментарии, я обнаружил, что я не одинок: все утверждают, что это «нелогично» или «неправильный выбор ключевого слова».

Вот лучший способ подумать об этом.

i = 1

if i < 10:
  print(i)
  i += 1
  go back to: if statement on Line 3

else:
  print("Loop finished normally")

Таким образом, становится ясно, что если условие i < 10 не выполняется, мы переходим к предложению else (точно так же, как обычное выражение if). Кроме того, если мы достигнем точки, где i < 10 имеет значение False, мы знаем, что находимся в конце цикла, и во время выполнения цикла не возникало никаких ошибок/возвратов/разрывов!

Надеюсь, это поможет! Следуйте за мной, чтобы получать дополнительные полезные советы по Python, и оставляйте любые вопросы в комментариях ниже.

Вы пробовали удерживать кнопку хлопка ❤️?

Фото Тиенко Дима на Unsplash