Definition
An object representing a stream of data. Repeated calls to the iterator’s
__next__()
method (or passing it to the built-in function
next()
) return successive items in the stream. When no more data
are available a StopIteration
exception is raised instead. At this
point, the iterator object is exhausted and any further calls to its
__next__()
method just raise StopIteration
again. Iterators
are required to have an __iter__()
method that returns the iterator
object itself so every iterator is also iterable and may be used in most
places where other iterables are accepted. One notable exception is code
which attempts multiple iteration passes. A container object (such as a
list
) produces a fresh new iterator each time you pass it to the
iter()
function or use it in a for
loop. Attempting this
with an iterator will just return the same exhausted iterator object used
in the previous iteration pass, making it appear like an empty container.
More information can be found in Iterator Types.
CPython implementation detail: CPython does not consistently apply the requirement that an iterator
define __iter__()
.