# Objetos Geradores

Objetos geradores são o que o Python usa para implementar iteradores geradores. Eles são normalmente criados por iteração sobre uma função que produz valores, em vez de invocar explicitamente `PyGen_New()` ou `PyGen_NewWithQualName()`.

type PyGenObject

  A estrutura C usada para objetos geradores.

PyTypeObject PyGen_Type

  O objeto de tipo correspondendo a objetos geradores.

int PyGen_Check(PyObject *ob)

  Retorna verdadeiro se ob for um objeto gerador; ob não deve ser `NULL`. Esta função sempre tem sucesso.

int PyGen_CheckExact(PyObject *ob)

  Retorna verdadeiro se o tipo do ob é `PyGen_Type`; ob não deve ser `NULL`. Esta função sempre tem sucesso.

PyObject *PyGen_New(PyFrameObject *frame)
  Retorna valor: Nova referência.

  Cria e retorna um novo objeto gerador com base no objeto frame. Uma referência a quadro é roubada por esta função. O argumento não deve ser `NULL`.

PyObject *PyGen_NewWithQualName(PyFrameObject *frame, PyObject *name, PyObject *qualname)
  Retorna valor: Nova referência.

  Cria e retorna um novo objeto gerador com base no objeto frame, com `__name__` e `__qualname__` definidos como name e qualname. Uma referência a frame é roubada por esta função. O argumento frame não deve ser `NULL`.

PyCodeObject *PyGen_GetCode(PyGenObject *gen)

  Retorna uma nova referência forte ao objeto de código encapsulado por gen. Esta função sempre tem sucesso.

## Objetos geradores assíncronos

Ver também

PEP 525

PyTypeObject PyAsyncGen_Type

  O objeto de tipo correspondente aos objetos geradores assíncronos. Está disponível como `types.AsyncGeneratorType` na camada Python.

  Adicionado na versão 3.6.

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

  Cria um novo gerador assíncrono que encapsule frame, com `__name__` e `__qualname__` definidos como name e qualname. frame é apropriado por esta função e não deve ser `NULL`.

  Em caso de sucesso, esta função retorna uma referência forte ao novo gerador assíncrono. Em caso de falha, esta função retorna `NULL` com uma exceção definida.

  Adicionado na versão 3.6.

int PyAsyncGen_CheckExact(PyObject *op)

  Retorna verdadeiro se op for um objeto gerador assíncrono, falso caso contrário. Esta função sempre tem sucesso.

  Adicionado na versão 3.6.