2008-09-03 ジェネレータ プログラミング Python 何か作るんだろうなという漠然とした名前だけど、作るのはただのイテレータみたいなもの。 Rubyのイテレータはyieldが呼ばれると渡されたブロックを実行するけど、Pythonのジェネレータはyieldが呼ばれるとそこでジェネレータ側の処理を中断し、値を伴って呼び出し側に戻り、next()が呼ばれたらyieldの続きから再び実行されるという頭が混乱しそうな作り。 まぁ難しく考えずにジェネレータでは繰り返したい要素を順次yieldに渡していけばいいとだけ覚えておけばいいと思う。 継続ってやつに似てる? でもジェネレータの外のことは覚えててくれないよな。