Objetos iteradores
******************

Python proporciona dos objetos iteradores de propósito general. El
primero, un iterador de secuencia, funciona con una secuencia
arbitraria que admite el método "__getitem__()". El segundo funciona
con un objeto invocable y un valor centinela, llamando al invocable
para cada elemento de la secuencia y finalizando la iteración cuando
se retorna el valor centinela.

PyTypeObject PySeqIter_Type

   Objeto tipo para objetos iteradores retornados por
   "PySeqIter_New()" y la forma de un argumento de la función
   incorporada "iter()" para los tipos de secuencia incorporados.

int PySeqIter_Check(op)

   Retorna verdadero si el tipo de *op* es "PySeqIter_Type". Esta
   función siempre finaliza con éxito.

PyObject* PySeqIter_New(PyObject *seq)
    *Return value: New reference.*

   Retorna un iterador que funciona con un objeto de secuencia
   general, *seq*. La iteración termina cuando la secuencia lanza
   "IndexError" para la operación de suscripción.

PyTypeObject PyCallIter_Type

   Objeto tipo para los objetos iteradores retornados por
   "PyCallIter_New()" y la forma de dos argumentos de la función
   incorporada "iter()".

int PyCallIter_Check(op)

   Retorna verdadero si el tipo de *op* es "PyCallIter_Type". Esta
   función siempre finaliza con éxito.

PyObject* PyCallIter_New(PyObject *callable, PyObject *sentinel)
    *Return value: New reference.*

   Retorna un nuevo iterador. El primer parámetro, *callable*, puede
   ser cualquier objeto invocable de Python que se pueda invocar sin
   parámetros; cada llamada debe retornar el siguiente elemento en la
   iteración. Cuando *callable* retorna un valor igual a *sentinel*,
   la iteración finalizará.
