mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
merge 3.2
This commit is contained in:
commit
143d034ecd
14 changed files with 242 additions and 240 deletions
|
@ -737,11 +737,11 @@ using a :keyword:`for` statement::
|
|||
This style of access is clear, concise, and convenient. The use of iterators
|
||||
pervades and unifies Python. Behind the scenes, the :keyword:`for` statement
|
||||
calls :func:`iter` on the container object. The function returns an iterator
|
||||
object that defines the method :meth:`__next__` which accesses elements in the
|
||||
container one at a time. When there are no more elements, :meth:`__next__`
|
||||
raises a :exc:`StopIteration` exception which tells the :keyword:`for` loop to
|
||||
terminate. You can call the :meth:`__next__` method using the :func:`next`
|
||||
built-in function; this example shows how it all works::
|
||||
object that defines the method :meth:`~iterator.__next__` which accesses
|
||||
elements in the container one at a time. When there are no more elements,
|
||||
:meth:`__next__` raises a :exc:`StopIteration` exception which tells the
|
||||
:keyword:`for` loop to terminate. You can call the :meth:`__next__` method
|
||||
using the :func:`next` built-in function; this example shows how it all works::
|
||||
|
||||
>>> s = 'abc'
|
||||
>>> it = iter(s)
|
||||
|
@ -761,8 +761,8 @@ built-in function; this example shows how it all works::
|
|||
|
||||
Having seen the mechanics behind the iterator protocol, it is easy to add
|
||||
iterator behavior to your classes. Define an :meth:`__iter__` method which
|
||||
returns an object with a :meth:`__next__` method. If the class defines
|
||||
:meth:`__next__`, then :meth:`__iter__` can just return ``self``::
|
||||
returns an object with a :meth:`~iterator.__next__` method. If the class
|
||||
defines :meth:`__next__`, then :meth:`__iter__` can just return ``self``::
|
||||
|
||||
class Reverse:
|
||||
"""Iterator for looping over a sequence backwards."""
|
||||
|
@ -819,8 +819,8 @@ easy to create::
|
|||
|
||||
Anything that can be done with generators can also be done with class based
|
||||
iterators as described in the previous section. What makes generators so
|
||||
compact is that the :meth:`__iter__` and :meth:`__next__` methods are created
|
||||
automatically.
|
||||
compact is that the :meth:`__iter__` and :meth:`~generator.__next__` methods
|
||||
are created automatically.
|
||||
|
||||
Another key feature is that the local variables and execution state are
|
||||
automatically saved between calls. This made the function easier to write and
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue