[Python-ideas] Default return values to int and float

Terry Reedy tjreedy at udel.edu
Fri Oct 7 00:04:22 CEST 2011


On 10/6/2011 4:32 PM, Jim Jewett wrote:
> On Wed, Oct 5, 2011 at 5:17 PM, Terry Reedy<tjreedy at udel.edu>  wrote:
>> On 10/4/2011 10:21 PM, Guido van Rossum wrote:
>>> We also have str.index which raised an exception, but people dislike
>>> writing try/except blocks.
>
>> Given that try/except blocks are routinely used for flow control in Python,
>> and that some experts even advocate using them over if/else (leap first), I
>> am tempted to ask why such people are using Python. I am curious,
>> though, why this exception is more objectionable than all the others
>
> str.index is a "little" method that it is tempting to use inline, even
> as part of a comprehension.

That is an argument *for* raising an exception on error. If one uses 
.find or .index in a situation where success is certain, then it does 
not matter what would happen on failure. If failure is possible, and 
users are tempted to skip checking, then the interpreter should raise a 
fuss (exception), as it does for other 'little' methods like arithmetic 
and subscript operations.

a.find(b) can raise an AttributeError or TypeError, so returning -1 
instead of raising ValueError only partly avoids possible exceptions.

> There isn't a good way to handle exceptions without a full statement.

Neither is there a good way to handle error return values without a full 
statement. The try/except form may require fewer lines than the if/else 
form.

-- 
Terry Jan Reedy




More information about the Python-ideas mailing list