On 10/19/2016 11:38 AM, Paul Moore wrote:

Also, unless I'm misunderstanding the proposal, there's a fairly major
compatibility break. At present we have:

lst = [1,2,3,4]
it = iter(lst)
for i in it:
...   if i == 2: break

for i in it:
...   print(i)
3
4


With the proposed behaviour, if I understand it, "it" would be closed
after the first loop, so resuming "it" for the second loop wouldn't
work. Am I right in that? I know there's a proposed itertools function
to bring back the old behaviour, but it's still a compatibility break.
And code like this, that partially consumes an iterator, is not
uncommon.

Agreed.  I like the idea in general, but this particular break feels like a 
deal-breaker.

I'd be okay with not having break close the iterator, and either introducing a 
'break_and_close' type of keyword or some other way of signalling that we will 
not be using the iterator any more so go ahead and close it.  Does that 
invalidate, or take away most of value of, the proposal?

--
~Ethan~
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to