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節は実行されます。