for elseとiterator
forのelse節は、breakしないでループが終了したとき実行されます。
ではイテレータ終了前にStopIterationを発行したとき、elseは実行される?
def g(): yield 1 raise StopIteration yield 2 yield 3 for i in g(): print i else: print "finish"
1 finish
ループ終了と同義なので、else節は実行されます。
forのelse節は、breakしないでループが終了したとき実行されます。
ではイテレータ終了前にStopIterationを発行したとき、elseは実行される?
def g(): yield 1 raise StopIteration yield 2 yield 3 for i in g(): print i else: print "finish"
1 finish
ループ終了と同義なので、else節は実行されます。