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

---

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

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

**\[PyGenObject\]`PyGenObject`**

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

**\[PyGen\_Type\][PyTypeObject](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) `PyGen_Type`**

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

**\[PyGen\_Check\]int `PyGen_Check`(ob)**

Возвращает истину, если

*ob*

является объектом-генератором;

*ob*

не должен быть

*NULL*

.

**\[PyGen\_CheckExact\]int `PyGen_CheckExact`(ob)**

Возвращает true, если тип

*ob*

– это

*PyGen\_Type*

, то есть объект-генератор;

*ob*

не должен быть

*NULL*

.

**\[PyGen\_New\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyGen_New`(PyFrameObject *\*frame*)**

*Возвращаемое значение: новая ссылка.*

Создаёт и возвращает новый объект-генератор на основе объекта *frame*. Эта функция забирает ссылку на *frame*. Параметр не должен быть *NULL*.
