Home | History | Annotate | Download | only in c-api
      1 .. highlightlang:: c
      2 
      3 .. _iterator-objects:
      4 
      5 Iterator Objects
      6 ----------------
      7 
      8 Python provides two general-purpose iterator objects.  The first, a sequence
      9 iterator, works with an arbitrary sequence supporting the :meth:`__getitem__`
     10 method.  The second works with a callable object and a sentinel value, calling
     11 the callable for each item in the sequence, and ending the iteration when the
     12 sentinel value is returned.
     13 
     14 
     15 .. c:var:: PyTypeObject PySeqIter_Type
     16 
     17    Type object for iterator objects returned by :c:func:`PySeqIter_New` and the
     18    one-argument form of the :func:`iter` built-in function for built-in sequence
     19    types.
     20 
     21 
     22 .. c:function:: int PySeqIter_Check(op)
     23 
     24    Return true if the type of *op* is :c:data:`PySeqIter_Type`.
     25 
     26 
     27 .. c:function:: PyObject* PySeqIter_New(PyObject *seq)
     28 
     29    Return an iterator that works with a general sequence object, *seq*.  The
     30    iteration ends when the sequence raises :exc:`IndexError` for the subscripting
     31    operation.
     32 
     33 
     34 .. c:var:: PyTypeObject PyCallIter_Type
     35 
     36    Type object for iterator objects returned by :c:func:`PyCallIter_New` and the
     37    two-argument form of the :func:`iter` built-in function.
     38 
     39 
     40 .. c:function:: int PyCallIter_Check(op)
     41 
     42    Return true if the type of *op* is :c:data:`PyCallIter_Type`.
     43 
     44 
     45 .. c:function:: PyObject* PyCallIter_New(PyObject *callable, PyObject *sentinel)
     46 
     47    Return a new iterator.  The first parameter, *callable*, can be any Python
     48    callable object that can be called with no parameters; each call to it should
     49    return the next item in the iteration.  When *callable* returns a value equal to
     50    *sentinel*, the iteration will be terminated.
     51