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

Ethan Furman ethan at stoneleaf.us
Wed Oct 5 19:56:58 CEST 2011


Nick Coghlan wrote:
> On Oct 5, 2011 10:32 AM, "Ethan Furman" wrote:
>> Ron Adam wrote:
>>> On Wed, 2011-10-05 at 19:08 +1300, Greg Ewing wrote:
>>>> Guido van Rossum wrote:
>>>>
>>>>> I'm out of ideas here. But of all these, str.find is probably still
>>>>> the worst -- I've flagged bugs caused by it too many times to count.
>>>>
>>>> Could a with-statement be used here somehow?
>>>>
>>>>     with finding(x, s) as i:
>>>>         ...
>>>
>>>
>>> Or an iterator.
>>>
>>>     for i in finding(x, s):
>>>          ...
>>
>>
>> How would the case of not found be handled in either of these proposals?
> 
> By never executing the body of the loop. It's still a thoroughly 
> unnatural API for the 0 or 1 case, though.


Let me rephrase:

   found = "I don't want to get into the cart!".find('z')
   if found >= 0:
       # do stuff if found
   else:
       # do stuff if not found

or

   found = "I don't want to get into the cart!".find('n')
   while found >= 0:
       # do stuff if found
       found = "I don't want to get into the cart!".find('n', found+1)
       if found == -1:
           break
   else:
       print('false branch')
       # do stuff if not found

How would we reliably get the false branch with the above proposals?

~Ethan~



More information about the Python-ideas mailing list