yieldってなんなんだ

よく分かんないと思ってドキュメント見てたらようやく分かった。

def reverse(data):
    for index in range(len(data)-1, -1, -1):
        yield data[index]

なるほど、イテレータを作るために使えばいいのか。
yieldを宣言すると、data[index]をreturnして、一旦処理を中断。
で、イテレータからnext()が呼ばれると処理を再開してまたdata[index](さっきより++されている)を返すと。
んでもってジェネレータ関数内のローカル変数と中断時の位置は保存してくれる。

ようやくすっきりした。