GvR: > > I think we've argued about '' in 'abc' long enough. Tim has failed to > > convince me, so '' in 'abc' returns True. Barry has checked it all > > in. Ka-Ping: > My personal opinion sides with Tim -- i think an exception is definitely > the right choice. (I still haven't seen convincing examples where True > is a more useful result than an exception, and the fact that there is > doubt suggests that it is an exceptional case.) I think Barry and GvR are on the right track. My gut feeling is that it is best to stay with the mathematical view that the null set is a subset of every other set. It doesn't seem to have hurt the world of regular expressions where re.match('', 'abc') returns a match object. Likewise, the truth of "abc" ~ "" is not on the wart list for AWK. Excel and Lotus have both return non-zero for FIND("","abc"). Though errors should not pass silently, we are talking about an error that is possibly very far upstream from the membership check: potentialsub = complicatedfunction(*manyvars) #semantic error here <much other computation here ...> if potentialsub in astring: # why raise an exception way down here handle_inclusion() else: handle_exclusion() 'in' should not be responsible for suggesting that complicatedfunction() doesn't know what it is doing. If there is an error, it isn't the membership check; rather, it is a semantic problem with the function. Accordingly, the postcondition for the function belongs at the tail of the function and not as a precondition for the use of the result. Otherwise, the exception and its cause are too far apart (as in the example above). Raymond Hettinger
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4