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

---

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

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

#### `type PyGenObject`

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

#### `PyTypeObject PyGen_Type`

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

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

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

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

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