[Python] Главный секрет блока else в циклах пайтона
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Это короткая статья для новичков. Наверняка вы знаете, что в пайтоне для циклов 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, то закончить цикл, иначе вызвать исключение», то все становится на свои места.
===========
Источник:
habr.com
===========
Похожие новости:
- [Python] В каких случаях не нужно использовать списки в Python (перевод)
- [Аналитика мобильных приложений] Как сменить профессию и стать крутым аналитиком?
- [C++, Python, Учебный процесс в IT] Яндекс.Практикум запустил онлайн-курсы для Junior-разработчиков
- [Creative Commons, Python, TensorFlow] Внедрение RoI Pooling в TensorFlow + Keras
- [Rust, Алгоритмы, Демосцена] Как я написал интро 4K на Rust — и оно победило (перевод)
- [Firefox, JavaScript, Python, Реверс-инжиниринг, Системы обмена сообщениями] Магия WebPush в Mozilla Firefox. Взгляд изнутри
- [Python, Машинное обучение, Искусственный интеллект, TensorFlow] Подборка статей о машинном обучении: кейсы, гайды и исследования за июнь 2020
- [DevOps, GitHub, Open source, Python] Словарь русского айти
- [MySQL, Python, Машинное обучение] Web server for Machine Learning 'VKF-solver'
- [Python, Учебный процесс в IT] Повелевать Web’ом с помощью Python (перевод)
Теги для поиска: #_python, #_python, #_tsikly (циклы), #_python
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 23:42
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Это короткая статья для новичков. Наверняка вы знаете, что в пайтоне для циклов 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, то закончить цикл, иначе вызвать исключение», то все становится на свои места. =========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 23:42
Часовой пояс: UTC + 5