ASPN : Python Cookbook : subscriptable generator
内部キャッシュを使っていてリストのようにアクセスできるジェネレータ、とのこと。
ジェネレータって関数のジェネレータとは違うよね。
キャッシュにはSQLObjectを使っていて富豪的な感じ。PickleColにオブジェクトをそのまんまつっこんでいる。
三項演算子を使ってるところがあるので、そのままだとPython2.4では実行できない。
return [self._getFromCache(i) for i in xrange(k.start, k.stop, 1 if k.start < k.stop else -1)]
わかりにくいけどxrangeの第三引数が、k.start < k.stopなら1、そうでなければ-1。
調べたこと
- tempfileモジュール
- 反復処理できるクラスのイディオム
- __iter__()/next()
- __getitem__(self, key)/__setitem__(self, key, value)
tempfileモジュール
一時ファイルを作るときに使う。TemporaryFileでオブジェクトを返させる方法とmkstempでパスを取る方法がある。
TemporaryFile() と違って、mkstemp() で生成されたファイルが用済みになったときにファイルを消去するのはユーザの責任です。
とリファレンスに書いてある。なのでこのレシピだと実行するたびに/tmp/の下にファイルが増えていく。