Как стать автором
Обновить

Главный секрет блока else в циклах пайтона

Время на прочтение 1 мин
Количество просмотров 48K

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


for f in files:
    if f.uuid == match_uuid:
        break
else:
    raise FileNotFound()

Когда будет исключение: когда файл не найден? Когда найден? Когда список пуст? На этот вопрос сложно ответить, потому что блок else находится на одном уровне с блоком for и кажется, что это какое-то условие, относящиеся к самому списку; например, когда for не нашел ни одной записи. Но достаточно знать главный секрет блока else для циклов, чтобы больше никогда не терять на это время:


Блок else после циклов относится не к самому циклу, а к оператору break!


И действительно, блок else выполнится в любом случае, если только выполнение цикла не было прервано оператором break, return или raise.


Если читать пример выше так: «если файл имеет нужный нам uuid, то закончить цикл, иначе вызвать исключение», то все становится на свои места.

Теги:
Хабы:
+76
Комментарии 161
Комментарии Комментарии 161

Публикации

Истории

Работа

Data Scientist
58 вакансий
Python разработчик
128 вакансий

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн