Багато програмістів 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кошти в основному, «якщо умова продовження не може ». У традиційній для циклу умовою продовження зазвичай є i < 42, у цьому випадку цю частину ви можете розглядати якif i < 42; execute the loop body; else; do that other thing
break. Канонічний випадок використання - це коли цикл щось шукає, і розривається, коли його знаходить. Виконання elseвиконується лише в тому випадку, якщо нічого не знайдено.