質問を投稿することを含むほかの全ての手段を使い果たしたのちの最後の手段にしてください。レベル両方に対するイテレーションインターフェイスです。オブジェクトが呼び出し元からどのように反復されるのか定義出来ます。書くことが出来るようにオブジェクトへの添え字操作を定義するのに使うものです。ループをサポートするためだけにこれを使うことは、少しばかり人を欺いてしまいます。パラメータは本質的に無意味です。加算して然るべきだと考えるでしょう。番目の要素にアクセス出来ることを意味しません、本来そうであるべきなのに。おいては、イテレーションは分けて定義出来ます。メソッドは本当にランダムアクセスをサポートしたいクラスだけが使えば良いです。イテレータの基礎的なアイディアは単純です。イテレータを取り出すのに使います。呼び続けるイテレータを返します。イテレータは普通自身へのイテレータです。変更されています---)。これは引数を取らず、次の値を返します。イテレータを返す何かであれば良いです。イテレータプロトコルを実装しています。インタプリタがシーケンスを反復する場合にはいつでも、それはイテレータプロトコルの使用に変換されます。基礎型には既にイテレータのサポートが追加されています。キーでの反復イテレータを返すのはただのデフォルトの振る舞いです。変わっただけでなく、これらは「ビュー」オブジェクトを返すように変更されています。キー有無を直接問い合わせる唯一の方法です---)。ファイルもイテレータを提供しています。前の要素を取り出す手段もなければ、イテレータをリセットしたりコピーしたりといったことも出来ません。単純なジェネレータ¶ジェネレータはもう一つの新機能で、これはイテレータの導入と連携するものです。標準的な関数コールについては、よくご存じに違いありません。関数を呼ぶと、ローカル変数を作るプライベートな名前空間ができますね。文まで来ると、ローカル変数が破壊されてから、返り値が呼び出し元に返ります。次に同じ関数をもう一度呼ぶと、新しいプライベート名前空間に新規のローカル変数が作られるのです。関数を出るときにローカル変数を捨てなければどうなるでしょうか。その出ていったところから関数を続行できたとしたら、どうでしょう。ジェネレータは続行できる関数と考えることができます。いった書き方もできます。function.自分でクラスを書いて、ジェネレータで言うところのローカル変数をインスタンス変数として全部保管しておけば、同じ効果を得ることは可能です。インクリメントして返すようにすればできます。ある程度複雑なジェネレータになってくると、同じことをするクラスを書くのは格段にややこしいことになります。面白い例がたくさん含まれています。「に」値を戻せるようにするものです。使うと下記例はもっとスッキリ書けます。解を出す例が入っています。ジェネレータが言語の中枢になっています。あらゆる式と関数がジェネレータのように振舞います。