[Python-ideas] Revised**11 PEP on Yield-From

Jacob Holm jh at improva.dk
Sat Apr 18 00:39:21 CEST 2009

Greg Ewing wrote:
> Jacob Holm wrote:
>>   1. Throwing StopIteration to an iterator without a throw() method.
> Guido seems happy not to care what happens if you
> throw StopIteration in, so I'm happy to do so as
> well -- it saves considerable complication.

I was about to reiterate how treating a missing throw like I suggested 
would make my wrappers simpler, but realized that it actually makes very 
little difference.

>  > What should happen with an iterator that has a
>> throw or close attribute that just happens to have the value None?
>  > The expansion handles it as if the attribute wasn't there
> That's a good point -- I hadn't intended that.


Note that treating None as missing might actually be useful by making it 
easier to "hide" the throw() or close() method of a base class from 
yield-from.  IIRC there is a precedent for treating None this way in the 
handling of hash().

Even without handling None this way it is still possible to hide the 
base class methods by creating a property that raises AttributeError, so 
this is not all that important.

I just think that using None is slightly cleaner for this use.

- Jacob

More information about the Python-ideas mailing list