- PVSM.RU - https://www.pvsm.ru -
Это короткая статья для новичков. Наверняка вы знаете, что в пайтоне для циклов 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, то закончить цикл, иначе вызвать исключение», то все становится на свои места.
Автор: Александр Карпинский
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/354855
Ссылки в тексте:
[1] Источник: https://habr.com/ru/post/510426/?utm_source=habrahabr&utm_medium=rss&utm_campaign=510426
Нажмите здесь для печати.