Issue #7205: Fix a possible deadlock when using a BZ2File object from several threads...
[python.git] / Doc / c-api / iterator.rst
blobcd2fa3304530975b54d1b15ee9edf6284d2ff1c9
1 .. highlightlang:: c
3 .. _iterator-objects:
5 Iterator Objects
6 ----------------
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.
15 .. cvar:: PyTypeObject PySeqIter_Type
17    Type object for iterator objects returned by :cfunc:`PySeqIter_New` and the
18    one-argument form of the :func:`iter` built-in function for built-in sequence
19    types.
21    .. versionadded:: 2.2
24 .. cfunction:: int PySeqIter_Check(op)
26    Return true if the type of *op* is :cdata:`PySeqIter_Type`.
28    .. versionadded:: 2.2
31 .. cfunction:: PyObject* PySeqIter_New(PyObject *seq)
33    Return an iterator that works with a general sequence object, *seq*.  The
34    iteration ends when the sequence raises :exc:`IndexError` for the subscripting
35    operation.
37    .. versionadded:: 2.2
40 .. cvar:: PyTypeObject PyCallIter_Type
42    Type object for iterator objects returned by :cfunc:`PyCallIter_New` and the
43    two-argument form of the :func:`iter` built-in function.
45    .. versionadded:: 2.2
48 .. cfunction:: int PyCallIter_Check(op)
50    Return true if the type of *op* is :cdata:`PyCallIter_Type`.
52    .. versionadded:: 2.2
55 .. cfunction:: PyObject* PyCallIter_New(PyObject *callable, PyObject *sentinel)
57    Return a new iterator.  The first parameter, *callable*, can be any Python
58    callable object that can be called with no parameters; each call to it should
59    return the next item in the iteration.  When *callable* returns a value equal to
60    *sentinel*, the iteration will be terminated.
62    .. versionadded:: 2.2