##
7.5.5 イテレータオブジェクト (iterator object)

Python では二種類のイテレータオブジェクトを提供しています。 一つ目は配列イテレータで、`__getitem__()` メソッドを サポートする任意の配列を取り扱います。二つ目は呼び出し可能 オブジェクトとセンチネル値 (sentinel value) を扱い、 配列内の要素ごとに呼び出し可能オブジェクトを呼び出して、 センチネル値が返されたときに反復処理を終了します。

PyTypeObject `PySeqIter_Type`
  `PySeqIter_New()` や、組み込み配列型に対して 1 引数形式の組み込み関数`iter()` を呼び出したときに 返される、イテレータオブジェクトの型オブジェクトです。 バージョン2.2 以降で新規追加された 仕様です。

int `PySeqIter_Check`( | op)

  `PySeqIter_Type` の型が op のときに真を返します。 バージョン2.2 以降で新規追加された 仕様です。

PyObject* `PySeqIter_New`( | PyObject *seq)

  戻り値: 新たな参照.
  一般的な配列オブジェクト seq を扱うイテレータを返します。 反復処理は、配列が添字指定操作の際に `IndexError` を 返したときに終了します。 バージョン2.2 以降で新規追加された 仕様です。

PyTypeObject `PyCallIter_Type`
  `PyCallIter_New()` や、組み込み関数 `iter()` の 2 引数形式が返すイテレータオブジェクトの型オブジェクトです。 `iter()` built-in function. バージョン2.2 以降で新規追加された 仕様です。

int `PyCallIter_Check`( | op)

  `PyCallIter_Type` の型が op のときに真を返します。 バージョン2.2 以降で新規追加された 仕様です。

PyObject* `PyCallIter_New`( | PyObject *callable, PyObject *sentinel)

  戻り値: 新たな参照.
  新たなイテレータを返します。最初のパラメタ callable は 引数なしで呼び出せる Python の呼び出し可能オブジェクトなら なんでもかまいません; callableは、呼び出されるたびに 次の反復処理対象オブジェクトを返さなければなりません。 生成されたイテレータは、 callableが sentinel に等しい 値を返すと反復処理を終了します。 バージョン2.2 以降で新規追加された 仕様です。