Многие программисты Python, вероятно, не знают, что синтаксис whileциклов и forциклов включает необязательное else:предложение:
for val in iterable:
do_something(val)
else:
clean_up()
Тело elseпредложения является хорошим местом для определенных видов действий по очистке и выполняется при обычном завершении цикла: то есть, выход из цикла с предложением returnили breakпропуск elseпредложения; выход после того, как continueвыполняет его. Я знаю это только потому, что только что посмотрел (еще раз), потому что не могу вспомнить, когда было выполнено elseпредложение.
Всегда? На «провал» цикла, как следует из названия? На регулярное прекращение? Даже если цикл завершен с return? Я никогда не могу быть полностью уверен, не глядя на это.
Я виню свою сохраняющуюся неопределенность в выборе ключевого слова: я нахожу elseневероятно немонемным для этой семантики. Мой вопрос не в том, «почему это ключевое слово используется для этой цели» (за который я бы, вероятно, проголосовал бы, хотя бы только после прочтения ответов и комментариев), а как я могу подумать о elseключевом слове, чтобы его семантика имела смысл, и я может поэтому помнить это?
Я уверен, что было довольно много обсуждений по этому поводу, и я могу себе представить, что выбор был сделан для соответствия с предложением tryзаявления else:(которое я также должен посмотреть), и с целью не добавлять в список Зарезервированные слова Python. Возможно, причины выбора elseпрояснят его функцию и сделают его более запоминающимся, но я после соединения имени с функцией, а не после исторического объяснения как такового.
Ответы на этот вопрос , который мой вопрос был кратко закрыт как дубликат, содержат много интересных предысторий. Мой вопрос имеет другую направленность (как связать определенную семантику elseс выбором ключевого слова), но я чувствую, что где-то должна быть ссылка на этот вопрос.
elseосновном означает «если условие продолжения не выполнено». В традиционном цикле for условием продолжения обычно является i < 42: в этом случае вы можете просмотреть эту часть какif i < 42; execute the loop body; else; do that other thing
break. Канонический вариант использования - это когда цикл ищет что-то и прерывается, когда он это находит. elseВыполняется только тогда , когда ничего не найдено.