[Python-ideas] Yield-from: Nonexistent throw() and close()?
Jacob Holm
jh at improva.dk
Sat Feb 21 15:08:54 CET 2009
Hi Bruce
Bruce Frederiksen wrote:
> Jacob Holm wrote:
>> I'd hate for this:
>>
>> def foo():
>> for i in xrange(5):
>> yield i
>>
>> to behave different from this:
>>
>> def foo():
>> yield from xrange(5)
> These two forms already behave differently when generators are used
> (rather than xrange), why should they not also behave differently when
> non-generators are used?
Not sure in what way you think they behave differently? foo is a
generator in both cases, and as such has a send method.
I am thinking of #2 as a simple rewrite/refactoring using the nifty new
feature. Why should foo().send('bar') ignore the value in #1 and raise
an exception in #2?
>
> "In the face of ambiguity, refuse the temptation to guess."
>
> I think that an exception makes more sense, otherwise, we are guessing
> as to what the programmer intended by using send in your example.
I disagree. The principle of least surprise tells me that #1 and #2
should be the same.
Regards
Jacob
More information about the Python-ideas
mailing list