Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #32158
| From | Terry Reedy <tjreedy@udel.edu> |
|---|---|
| Subject | Re: while expression feature proposal |
| Date | 2012-10-25 16:09 -0400 |
| References | (1 earlier) <20121024222656.GA32708@cskk.homeip.net> <5088779A.3000202@cs.wisc.edu> <mailman.2811.1351140683.27098.python-list@python.org> <k6b257$l8k$1@r03.glglgl.gl> <5089198d$0$29978$c3e8da3$5496439d@news.astraweb.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.2862.1351195781.27098.python-list@python.org> (permalink) |
On 10/25/2012 6:50 AM, Steven D'Aprano wrote: > On Thu, 25 Oct 2012 11:52:31 +0200, Thomas Rachel wrote: > >> Am 25.10.2012 06:50 schrieb Terry Reedy: >> >>> Keep in mind that any new syntax has to be a substantial improvement in >>> some sense or make something new possible. There was no new syntax in >>> 3.2 and very little in 3.3. >> >> I would consinder this at least as new substantial than >> >> yield_from it >> >> as opposed to >> >> for i in it: yield i >> >> - although I think that was a good idea as well. > > Then I think you have misunderstood the purpose of "yield from". The fact > that you can replace the two lines: > > for value in another_iterator: > yield iterator > > with a one-liner "yield from another_iterator" is the least important use- > case for yield-from. If that was the only use-case, it probably would not > have been allowed, because it adds complication to the language for a > trivial gain. > > The purpose of yield-from is to transfer control to another coroutine, > not to save one trivial line of code. > > [quote] > However, if the subgenerator is to interact properly with the caller in > the case of calls to send(), throw() and close(), things become > considerably more difficult. As will be seen later, the necessary code is > very complicated, and it is tricky to handle all the corner cases > correctly. > > A new syntax will be proposed to address this issue. In the simplest use > cases, it will be equivalent to the above for-loop, but it will also > handle the full range of generator behaviour, and allow generator code to > be refactored in a simple and straightforward way. > [end quote] > > http://www.python.org/dev/peps/pep-0380/ > > > "yield from" is a *huge* win in terms of correctness and power, not just > a trivial saving in lines of code. "while expr as var" is not. r = yield from g is equivalent to about 40 lines of code as given here http://www.python.org/dev/peps/pep-0380/#formal-semantics It took the developers several tries to first get a version that worked and then to work out the exact details. -- Terry Jan Reedy
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: while expression feature proposal Terry Reedy <tjreedy@udel.edu> - 2012-10-25 00:50 -0400
Re: while expression feature proposal Thomas Rachel <nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915@spamschutz.glglgl.de> - 2012-10-25 11:52 +0200
Re: while expression feature proposal Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-10-25 10:50 +0000
Re: while expression feature proposal Thomas Rachel <nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915@spamschutz.glglgl.de> - 2012-10-25 13:20 +0200
Re: while expression feature proposal Terry Reedy <tjreedy@udel.edu> - 2012-10-25 16:09 -0400
Re: while expression feature proposal Ian Kelly <ian.g.kelly@gmail.com> - 2012-10-25 10:44 -0600
Re: while expression feature proposal Grant Edwards <invalid@invalid.invalid> - 2012-10-25 14:17 +0000
csiph-web