# 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á.