> **Источник:** https://python-all.ru/3.5/c-api/gen.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

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

Объекты-генераторы – это то, что Python использует для реализации итераторов генераторов. Обычно они создаются путём итерации по функции, которая возвращает значения, а не явным вызовом [`PyGen_New()`](https://python-all.ru/3.5/c-api/gen.html#c.PyGen_New) или [`PyGen_NewWithQualName()`](https://python-all.ru/3.5/c-api/gen.html#c.PyGen_NewWithQualName).

**`PyGenObject`**

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

**[PyTypeObject](https://python-all.ru/3.5/c-api/type.html#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*.
