Мой ответ будет сосредоточен на том, КОГДА мы можем использовать while / for-else.
На первый взгляд кажется, что при использовании
while CONDITION:
EXPRESSIONS
print 'ELSE'
print 'The next statement'
и
ничего не отличается
while CONDITION:
EXPRESSIONS
else:
print 'ELSE'
print 'The next statement'
Поскольку оператор print 'ELSE'
, кажется, всегда выполняется в обоих случаях (оба, когда цикл while
завершен или не запущен).
Тогда отличается только тогда, когда оператор print 'ELSE'
не будет исполнено.Это когда break
внутри блока кода под while
In [17]: i = 0
In [18]: while i < 5:
print i
if i == 2:
break
i = i +1
else:
print 'ELSE'
print 'The next statement'
....:
0
1
2
The next statement
Если отличается от:
In [19]: i = 0
In [20]: while i < 5:
print i
if i == 2:
break
i = i +1
print 'ELSE'
print 'The next statement'
....:
0
1
2
ELSE
The next statement
return
не в этой категории,потому что это делает тот же эффект для двух вышеупомянутых случаев.
повышение исключения также не вызывает разницы, потому что, когда оно повышается, следующий код будет выполняться в обработчике исключений (кроме блока), код в else
или сразу после предложения while
не будет выполнено.