On Sun, 13 Dec 2009 14:35:21 +0000, exarkun wrote:

>>StopIteration is intended to be used only within the .__next__ method of
>>iterators. The devs know that other 'off-label' use results in the
>>inconsistency you noted, but their and my view is 'don't do that'.
> 
> Which is unfortunate, because it's not that hard to get StopIteration
> without explicitly raising it yourself and this behavior makes it
> difficult to debug such situations.

I can't think of any way to get StopIteration without explicitly raising 
it yourself. It's not like built-ins or common data structures routinely 
raise StopIteration. I don't think I've *ever* seen a StopIteration that 
I didn't raise myself.


> What's with this view, exactly?  Is it just that it's hard to implement
> the more desirable behavior?

What is that "more desirable behaviour"? That StopIteration is used to 
signal that Python should stop iterating except when you want it to be 
ignored? Unfortunately, yes, it's quite hard to implement "do what the 
caller actually wants, not what he asked for" behaviour -- and even if it 
were possible, it goes against the grain of the Zen of Python.

If you've ever had to debug faulty "Do What I Mean" software, you'd see 
this as a good thing.



-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to