[Python-ideas] Default return values to int and float
MRAB
python at mrabarnett.plus.com
Wed Oct 5 20:42:33 CEST 2011
On 05/10/2011 18:56, Ethan Furman wrote:
> 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?
>
We've had the discussion before about how to handle the case when the
body of the
loop isn't executed at all.
I had the thought that a possible syntax could be:
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)
or:
print('false branch')
# do stuff if not found
but I think I'll leave it there.
More information about the Python-ideas
mailing list