ジェネレータオブジェクト

ジェネレータオブジェクトは、 Python がジェネレータイテレータを実装するのに使っているオブジェクトです。ジェネレータオブジェクトは通常、 PyGen_New() や PyGen_NewWithQualName() の明示的な呼び出しではなく、値を yield する関数のイテレーションにより生成されます。

type PyGenObject

ジェネレータオブジェクトに使われている C 構造体です。

PyTypeObject PyGen_Type

ジェネレータオブジェクトに対応する型オブジェクトです。

int PyGen_Check(PyObject *ob)

ob がジェネレータオブジェクトの場合に真を返ます、 ob は NULL であってはなりません。この関数は常に成功します。

int PyGen_CheckExact(PyObject *ob)

ob の型が PyGen_Type なら真を返します。 ob は NULL であってはなりません。 この関数は常に成功します。

PyObject *PyGen_New(PyFrameObject *frame)
戻り値: 新しい参照。

frame オブジェクトに基づく新しいジェネレータオブジェクトを作成して返します。 この関数は、エラー時も含めて frame への参照を 盗みます。 引数は NULL であってはなりません。

PyObject *PyGen_NewWithQualName(PyFrameObject *frame, PyObject *name, PyObject *qualname)
戻り値: 新しい参照。

frame オブジェクトに基づく新しいジェネレータオブジェクトを作成し、__name__ と __qualname__ をそれぞれ name と qualname に設定して返します。 この関数は、エラー時も含めて frame への参照を 盗みます。 frame 引数は NULL であってはなりません。

PyCodeObject *PyGen_GetCode(PyGenObject *gen)

gen がラップするコードオブジェクトへの新しい 強参照 を返します。 この関数は常に成功します。

非同期ジェネレータオブジェクト

参考

PEP 525

PyTypeObject PyAsyncGen_Type

非同期ジェネレータオブジェクトに対応する型オブジェクトです。 Python レイヤでは types.AsyncGeneratorType として利用できます。

Added in version 3.6.

PyObject *PyAsyncGen_New(PyFrameObject *frame, PyObject *name, PyObject *qualname)

frame をラップする新しい非同期ジェネレータを作成し、__name__ と __qualname__ をそれぞれ name と qualname に設定します。 この関数は、エラー時も含めて frame への参照を 盗みます。 frame は NULL であってはなりません。

成功すると、新しい非同期ジェネレータへの 強参照 を返します。 失敗すると、例外を設定して NULL を返します。

Added in version 3.6.

int PyAsyncGen_CheckExact(PyObject *op)

op が非同期ジェネレータオブジェクトなら真を、それ以外なら偽を返します。 この関数は常に成功します。

Added in version 3.6.

非推奨の API

PyAsyncGenASend_CheckExact(op)

この API は誤って Python の C API に含められたものです。

網羅性のためだけにここに記載しています。 この API は使わないでください。

バージョン 3.14 で ソフト非推奨 <Soft deprecated>.