Bryan Olson wrote: > Antoon Pardon wrote: > > Bryan Olson schreef: > > > >>Steve Holden asked: > >>>And what are you proposing that > >>>find() should return if the substring isn't found at all? please don't > >>>suggest it should raise an exception, as index() exists to provide that > >>>functionality. > >> > >>There are a number of good options. A legal index is not one of > >>them. > > > > IMO, with find a number of "features" of python come together. > > that create an awkward situation. > > > > 1) 0 is a false value, but indexes start at 0 so you can't > > return 0 to indicate nothing was found. > > > > 2) -1 is returned, which is both a true value and a legal > > index. > > > > It probably is too late now, but I always felt, find should > > have returned None when the substring isn't found. > > None is certainly a reasonable candidate. The one-past-the-end > value, len(sequence), would be fine, and follows the preferred > idiom of C/C++. I don't see any elegant way to arrange for > successful finds always to return a true value and unsuccessful > calls to return a false value. > > The really broken part is that unsuccessful searches return a > legal index. > We might agree, before further discussion, that this isn't the most elegant part of Python's design, and it's down to history that this tiny little wart remains.
> My suggestion doesn't change what find() returns, and doesn't > break code. Negative one is a reasonable choice to represent an > unsuccessful search -- provided it is not a legal index. Instead > of changing what find() returns, we should heal the > special-case-when-index-is-negative-in-a-certain-range wart. > > What I don't understand is why you want it to return something that isn't a legal index. Before using the result you always have to perform a test to discriminate between the found and not found cases. So I don't really see why this wart has put such a bug up your ass. regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list