Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #5400
| References | <1k19ubi.dwyvio12tkc4kN%see@sig.for.address> <BANLkTi=TWSY-Lg9ovuZEPDZWv1QXtL1UKQ@mail.gmail.com> |
|---|---|
| From | Ian Kelly <ian.g.kelly@gmail.com> |
| Date | 2011-05-14 19:05 -0600 |
| Subject | Re: I don't understand generator.send() |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.1570.1305421558.9059.python-list@python.org> (permalink) |
On Sat, May 14, 2011 at 6:47 PM, Chris Angelico <rosuav@gmail.com> wrote: > def ints(): > i=0 > queue=[] > while True: > if queue: # see other thread, this IS legal and pythonic and > quite sensible > sent=(yield queue.pop(0)) > else: > sent=(yield i) > i+=1 > if sent is not None: > yield None # This is the return value from gen.send() > queue.append(sent) > > With this generator, you maintain a queue of sent values (if you want > it to be a LIFO stack rather than a FIFO queue, just change the pop(0) > to just pop()), and if the queue's empty, it produces sequential > integers. (Incidentally, the sent values don't have to be integers. I > leave it to you to decide whether that's any use or not.) Actually, this won't work, because the value of the "yield None" gets ignored. Thus if you try to call send() twice in a row, the generator the treats second send() as if it were a next(), and it is not possible to have more than one item in the queue.
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
I don't understand generator.send() see@sig.for.address (Victor Eijkhout) - 2011-05-14 19:08 -0500
Re: I don't understand generator.send() "OKB (not okblacke)" <brenNOSPAMbarn@NObrenSPAMbarn.net> - 2011-05-15 00:38 +0000
Re: I don't understand generator.send() Chris Angelico <rosuav@gmail.com> - 2011-05-15 10:47 +1000
Re: I don't understand generator.send() see@sig.for.address (Victor Eijkhout) - 2011-05-14 20:40 -0500
Re: I don't understand generator.send() Chris Rebert <crebert@ucsd.edu> - 2011-05-14 17:47 -0700
Re: I don't understand generator.send() Ian Kelly <ian.g.kelly@gmail.com> - 2011-05-14 18:57 -0600
Re: I don't understand generator.send() Ian Kelly <ian.g.kelly@gmail.com> - 2011-05-14 19:05 -0600
Re: I don't understand generator.send() Chris Angelico <rosuav@gmail.com> - 2011-05-15 11:17 +1000
Re: I don't understand generator.send() Ian Kelly <ian.g.kelly@gmail.com> - 2011-05-14 21:03 -0600
csiph-web