何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

『Effective Python』Item 17: 引数によるイテレーションは防御的に行う

『Effective Python』の続き。イテレータは使い捨て。 www.effectivepython.com

イテレータは状態を持っている(ステートフル)ので、「使い終わった」という状態が存在する。また、「使い終わった」と「元々何も無い」が区別できない(どちらもStopIteration例外を送出するだけなので)。何度も使いたい場合はコンテナクラスを定義しておこう、という話やそもそも生イテレータを受け付けない、という対策を打つといった方法がある。

この章はサンプルがまるごと掲載されているので気になる方は読んでいただきたい。 www.effectivepython.com

この手のバグ?は結構悩まされていたが、こういうことだったのかとわかってうれしかった思い出がある。このサンプルを翻訳してこのブログに公開しようとしたのがこの一連の記事のきっかけである。何とか、合法的に公開したいのだが上手い方法はあるだろうか。