[Python-Dev] PEP 3142: Add a "while" clause to generator expressions
Alexey G. Shpagin
python-3000 at udmvt.ru
Tue Jan 20 16:57:55 CET 2009
On Tue, Jan 20, 2009 at 10:45:27AM -0500, Gerald Britton wrote:
> OK, so your suggestion:
>
> g = (n for n in range(100) if n*n < 50 or raiseStopIteration())
>
> really means "return in in the range 0-99 if n-squared is less than 50
> or the function raiseStopIteration() returns True".
>
> How would this get the generator to stop once n*n >=50? It looks
> instead like the first time around, StopIteration will be raised and
> (presumably) the generator will terminate.
Just test it. After the generator is terminated, no one will call
range(100).next()
method, if I really understand you.
Maybe (as suggested before with 'if ... else break`) we should rename
function raiseStopIteration() to else_break(),
since it looks to me being a 'if ... else break's implementation with functions.
Example will look like
g = (n for n in range(100) if n*n < 50 or else_break())
That's to the matter of taste, I think.
--
Alexey G. Shpagin
More information about the Python-Dev
mailing list