イテレータプロトコル (iterator protocol)¶
イテレータを扱うための固有の関数は二つあります。
-
int PyIter_Check(PyObject *o)¶
- 次に属します: Stable ABI (バージョン 3.8 より).
オブジェクト o を
PyIter_NextItem()に安全に渡せる場合はゼロ以外を、そうでなければ0を返します。 この関数は常に成功します。
-
int PyAIter_Check(PyObject *o)¶
- 次に属します: Stable ABI (バージョン 3.10 より).
オブジェクト o が
AsyncIteratorプロトコルを提供する場合はゼロ以外を、そうでなければ0を返します。 この関数は常に成功します。Added in version 3.10.
-
int PyIter_NextItem(PyObject *iter, PyObject **item)¶
- 次に属します: Stable ABI (バージョン 3.14 より).
成功すると、item にイテレータ iter の次の値への 強参照 を設定し、
1を返します。 残りの値がなければ、item にNULLを設定し、0を返します。 エラーの場合は、item にNULLを設定し、例外を設定して-1を返します。Added in version 3.14.
-
PyObject *PyIter_Next(PyObject *o)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
これは
PyIter_NextItem()の古い版で、後方互換性のために残されています。PyIter_NextItem()を使ってください。イテレータ o から次の値を返します。 このオブジェクトは
PyIter_Check()で判定されるイテレータでなければなりません (確認は呼び出し側の責任です)。 残りの値がなければ、例外を設定せずにNULLを返します。 要素の取得中にエラーが起きると、NULLを返して例外を引き継ぎます。
-
type PySendResult¶
PyIter_Send()の各種の結果を表す列挙値です。Added in version 3.10.
-
PySendResult PyIter_Send(PyObject *iter, PyObject *arg, PyObject **presult)¶
- 次に属します: Stable ABI (バージョン 3.10 より).
値 arg をイテレータ iter に送ります。 戻り値は次のとおりです:
イテレータが return した場合は
PYGEN_RETURN。 戻り値は presult を通じて返します。イテレータが yield した場合は
PYGEN_NEXT。 yield した値は presult を通じて返します。イテレータが例外を送出した場合は
PYGEN_ERROR。 presult はNULLになります。
Added in version 3.10.