Python 3.0a5 (r30a5:62856, May 10 2008, 10:34:28)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def f(x):
...  if x > 5: raise StopIteration
...
>>> [x for x in range(100) if not f(x)]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "<stdin>", line 1, in <listcomp>
 File "<stdin>", line 2, in f
StopIteration
>>> list(x for x in range(100) if not f(x))
[0, 1, 2, 3, 4, 5]

Certainly, it's an inconsistency compared to generator expressions, but is it a bug? I know that Python 3000 is making it so that list comprehension variables don't leak anymore, so I take it that the goal is to have them be more similar to generator expressions than not. Then again, maybe there are good reasons for this behavior? My own feeling is that these two cases should behave the same way, but I could be wrong.

I hope this isn't an old issue, but I've been lurking for a few months and haven't heard any discussion of this.

-- Carl Johnson
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to