Многие программисты на Python, вероятно, не знают, что синтаксис циклов while
и for
включает в себя необязательный параметр else:
clause:
for val in iterable:
do_something(val)
else:
clean_up()
Тело предложения else
является хорошим местом для определенных видов действий по очистке и выполняется при обычном завершении цикла: то есть, выход из цикла с return
или break
пропускает предложение else
; выход после continue
выполняет его. Я знаю это только потому, что только что посмотрел (еще раз), потому что я никогда не могу вспомнить, когда выполняется условие else
.
Всегда? На "провал" цикла, как следует из названия? На регулярное прекращение? Даже если цикл завершается с return
? Я никогда не могу быть полностью уверен, не глядя на это.
Я виню свою сохраняющуюся неуверенность в выборе ключевого слова: я нахожу else
невероятно немонемным для этой семантики. Мой вопрос не в том, "почему это ключевое слово используется для этой цели" (за который я бы, вероятно, проголосовал бы, хотя бы только после прочтения ответов и комментариев), а как я могу подумать о ключевом слове else
чтобы его семантика имела смысл, и Я могу поэтому помнить это?
Я уверен, что было довольно много обсуждений по этому поводу, и я могу себе представить, что выбор был сделан для согласованности с оператором try
else:
clause (который я также должен посмотреть) и с целью не добавлять в список зарезервированных слов Python. Возможно, причины выбора " else
прояснят его функцию и сделают его более запоминающимся, но я после соединения имени с функцией, а не после исторического объяснения как такового.
Ответы на этот вопрос, который мой вопрос был кратко закрыт как дубликат, содержат много интересных предысторий. Мой вопрос имеет другую направленность (как связать определенную семантику else
с выбором ключевого слова), но я чувствую, что где-то должна быть ссылка на этот вопрос.