Документация Python неофициальный перевод
Содержание страницы

Объекты-генераторыGenerator Objects

Объекты-генераторы – это то, что Python использует для реализации итераторов генераторов. Обычно они создаются путём итерации по функции, которая возвращает значения, а не явным вызовом PyGen_New() или PyGen_NewWithQualName().

type PyGenObject

C-структура, используемая для объектов-генераторов.

PyTypeObject PyGen_Type

Объект типа, соответствующий объектам-генераторам.

int PyGen_Check(PyObject *ob)

Возвращает истину, если ob является объектом-генератором; ob не должен быть NULL. Эта функция всегда завершается успешно.

int PyGen_CheckExact(PyObject *ob)

Возвращает истину, если тип obPyGen_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. Эта функция всегда завершается успешно.

Асинхронные объекты-генераторыAsynchronous Generator Objects

См. также

PEP 525

PyTypeObject PyAsyncGen_Type

Объект типа, соответствующий асинхронным объектам-генераторам. Доступен как types.AsyncGeneratorType на уровне Python.

Добавлено в версии 3.6.

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

Создаёт новый асинхронный генератор, оборачивающий frame, с __name__ и __qualname__, установленными в name и qualname. frame «перехватывается» этой функцией (даже при ошибке) и не должен быть NULL.

В случае успеха эта функция возвращает сильную ссылку на новый асинхронный генератор. В случае неудачи возвращает NULL с установленным исключением.

Добавлено в версии 3.6.

int PyAsyncGen_CheckExact(PyObject *op)

Возвращает истину, если op является асинхронным объектом-генератором, иначе ложь. Эта функция всегда завершается успешно.

Добавлено в версии 3.6.

Устаревший APIDeprecated API

PyAsyncGenASend_CheckExact(op)

Это API было включено в C API Python по ошибке.

Оно приведено здесь исключительно для полноты; не используйте это API.

Soft deprecated since version 3.14.