On Thu, Nov 23, 2017 at 3:36 PM, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote: > Paul Moore wrote: >> >> 3. List comprehensions are the same as list(the equivalent generator >> expression). > > > I don't think that's ever been quite true -- there have > always been odd cases such as what happens if you > raise StopIteration in list(generator_expression). You mean if the genexp leaks one? That's basically an error either way - the genexp will raise RuntimeError, but it's still an exception. >>> from __future__ import generator_stop >>> def boom(): raise StopIteration ... >>> [x if x < 3 else boom() for x in range(5)] Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <listcomp> File "<stdin>", line 1, in boom StopIteration >>> list(x if x < 3 else boom() for x in range(5)) Traceback (most recent call last): File "<stdin>", line 1, in <genexpr> File "<stdin>", line 1, in boom StopIteration The above exception was the direct cause of the following exception: Traceback (most recent call last): File "<stdin>", line 1, in <module> RuntimeError: generator raised StopIteration >>> So that's _one_ difference removed (mostly). ChrisA
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4