イテレータ
Pythonは次の要素を返す__next__()メソッドを持つオブジェクトを外部イテレータとして使う。コンテナオブジェクトの__iter__()メソッドがイテレータを返す。(便宜上、イテレータの__iter__()は自身を返す)
通常のプログラミングでは、obj.__iter__()のように直接呼ぶのではなく、組込み関数iterを使ってiter(obj)のようにする。同様に、通常の用法で呼ぶことを前提とした場合は__next__()ではなくnext()を使う。for文(Foreach文)はイテレータが使える場合はイテレータを使うが、そうでないコンテナオブジェクトに対しては直接、__getitem__()メソッドにより要素を取得し繰返しを実行する。
Pythonのfor文においてはiterableを範囲にとって、暗黙的にiteratorを利用する点を指して内部イテレータと呼ばれる場合もある。
また、Pythonには一種のコルーチンを記述できるジェネレータもある。ジェネレータはイテレータを返す関数で、yield文により、__next__()で実行される手続きを次々と記述できる。