Objeto Iterator
***************

O Python fornece dois objetos iteradores de uso geral. O primeiro, um
iterador de sequência, trabalha com uma sequência arbitrária que
suporta o método "__getitem__()". O segundo funciona com um objeto que
pode ser chamado e um valor de sentinela, chamando o que pode ser
chamado para cada item na sequência e finalizando a iteração quando o
valor de sentinela é retornado.

PyTypeObject PySeqIter_Type

   Objeto de tipo para objetos iteradores retornados por
   "PySeqIter_New()" e a forma de um argumento da função embutida
   "iter()" para tipos de sequência embutidos.

int PySeqIter_Check(op)

   Retorna true se o tipo de *op* for "PySeqIter_Type".

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

   Retorna um iterador que funcione com um objeto de sequência geral,
   *seq*. A iteração termina quando a sequência levanta "IndexError"
   para a operação de assinatura.

PyTypeObject PyCallIter_Type

   Objeto de tipo para objetos iteradores retornados por
   "PyCallIter_New()" e a forma de dois argumentos da função embutida
   "iter()".

int PyCallIter_Check(op)

   Retorna true se o tipo de *op* é "PyCallIter_Type".

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

   Retorna um novo iterador. O primeiro parâmetro, *callable*, pode
   ser qualquer objeto chamável do Python que possa ser chamado sem
   parâmetros; cada chamada deve retornar o próximo item na iteração.
   Quando *callable* retorna um valor igual a *sentinel*, a iteração
   será encerrada.
