Protocolo Iterador

Existem duas funções especificas para trabalhar com iteradores.

int PyIter_Check(PyObject *o)
Parte da ABI Estável desde a versão 3.8.

Return non-zero if the object o can be safely passed to PyIter_NextItem() and 0 otherwise. This function always succeeds.

int PyAIter_Check(PyObject *o)
Parte da ABI Estável desde a versão 3.10.

Retorna valor diferente de zero se o objeto o fornecer o protocolo AsyncIterator e 0 caso contrário. Esta função sempre é bem-sucedida.

Adicionado na versão 3.10.

int PyIter_NextItem(PyObject *iter, PyObject **item)
Parte da ABI Estável desde a versão 3.14.

Return 1 and set item to a strong reference of the next value of the iterator iter on success. Return 0 and set item to NULL if there are no remaining values. Return -1, set item to NULL and set an exception on error.

Adicionado na versão 3.14.

PyObject *PyIter_Next(PyObject *o)
Retorna valor: Nova referência. Parte da ABI Estável.

This is an older version of PyIter_NextItem(), which is retained for backwards compatibility. Prefer PyIter_NextItem().

Retorna o próximo valor do iterador o. O objeto deve ser um iterador de acordo com PyIter_Check() (cabe ao chamador verificar isso). Se não houver valores restantes, retorna NULL sem nenhuma exceção definida. Se ocorrer um erro ao recuperar o item, retorna NULL e passa a exceção.

type PySendResult

O valor de enum usado para representar diferentes resultados de PyIter_Send().

Adicionado na versão 3.10.

PySendResult PyIter_Send(PyObject *iter, PyObject *arg, PyObject **presult)
Parte da ABI Estável desde a versão 3.10.

Envia o valor arg para o iterador iter. Retorna:

  • PYGEN_RETURN se o iterador retornar. O valor de retorno é retornado via presult.

  • PYGEN_NEXT se o iterador render. O valor preduzido é retornado via presult.

  • PYGEN_ERROR se o iterador tiver levantado uma exceção. presult é definido como NULL.

Adicionado na versão 3.10.