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

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

PyTypeObject PySeqIter_Type

   "PySeqIter_New()" や、組み込みシーケンス型に対して 1 引数形式の組み
   込み関数 "iter()" を呼び出したときに返される、イテレータオブジェク
   トの型オブジェクトです。

int PySeqIter_Check(op)

   *op* の型が "PySeqlter_Type" 型の場合に真を返します。この関数は常に
   成功します。

PyObject* PySeqIter_New(PyObject *seq)
    *Return value: New reference.*

   一般的なシーケンスオブジェクト *seq* を扱うイテレータを返します。反
   復処理は、シーケンスが添字指定操作の際に "IndexError" を返したとき
   に終了します。

PyTypeObject PyCallIter_Type

   "PyCallIter_New()" や、組み込み関数 "iter()" の 2 引数形式が返すイ
   テレータオブジェクトの型オブジェクトです。

int PyCallIter_Check(op)

   *op* の型が "PyCallIter_Type" 型の場合に真を返します。この関数は常
   に成功します。

PyObject* PyCallIter_New(PyObject *callable, PyObject *sentinel)
    *Return value: New reference.*

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