Багато програмістів 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
виконується лише в тому випадку, якщо нічого не знайдено.