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

---

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

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

**`PyGenObject`**

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

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

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

#### `int PyGen_Check(PyObject *ob)`

Возвращает true, если *ob* – объект-генератор; *ob* не должен быть `NULL`.

#### `int PyGen_CheckExact(PyObject *ob)`

Возвращает истину, если тип *ob* – [`PyGen_Type`](https://python-all.ru/3.7/c-api/gen.html#c.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`.
