the usage of 'yield' keyword

Stephen Fairchild somebody at somewhere.com
Wed Oct 14 05:50:41 EDT 2009


Peng Yu wrote:

>
http://docs.python.org/reference/simple_stmts.html#grammar-token-yield_stmt
> 
> The explanation of yield is not clear to me, as I don't know what a
> generator is. I see the following example using 'yield'. Could
> somebody explain how 'yield' works in this example? Thank you!
> 
> def brange(limit):
>   i = 0
>   while i < limit:
>       yield i
>       i += 1

Let's make this as simple as possible.

>>> def g(x):
...    yield x
...
>>> p = g(4)
>>> type(p)
<type 'generator'>
>>> type(type(p))
<type 'type'>

So there you have it. Generator is an instance of 'type', hence a new-style
class, even though it is returned by a simple looking function.

>>> p.next()
4

What were you expecting?

>>> type(g)
<type 'function'>

g is a function that returns a generator. The yield statement does two
things. It states what is to be returned by the generator's next() method
and it also defines g as a function that returns a generator.
-- 
Stephen Fairchild



More information about the Python-list mailing list