By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,002 Members | 1,050 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,002 IT Pros & Developers. It's quick & easy.

PEP 342 misunderstanding

P: n/a
So I've been reading up on all the new stuff in PEP 342, and trying to
understand its potential. So I'm starting with a few simple examples to
see if they work as expected, and find they dont.

I'm basically trying to do the following:

for x in range(10):
print x*2

but coroutine-style.

My initial try was:
>>def printrange():
.... for x in range(10):
.... x = yield x
.... print x
....
>>g = printrange()
for x in g:
.... g.send(x*2)
....
0
1
None
4
3
None
8
5
None
12
7
None
16
9
None
>>>
Now, I was expecting that to be 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20.

What am I missing here?

Moof

Oct 8 '06 #1
Share this Question
Share on Google+
1 Reply


P: n/a
me******@gmail.com wrote:
>>>def printrange():
... for x in range(10):
... x = yield x
... print x
...
>>>g = printrange()
for x in g:
... g.send(x*2)
...
0
1
None
4
3
None
8
5
None
12
7
None
16
9
None

Now, I was expecting that to be 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20.

What am I missing here?
the output doesn't match your sample program; I assume you left out a
print statement or two from the second loop.

what you seem to be missing is that "next" (which is called by the
for-in loop) is basically the same thing as "send(None)". in other
words, you end up pulling two items from the generator for each iteration.

</F>

Oct 8 '06 #2

This discussion thread is closed

Replies have been disabled for this discussion.