On 2/17/2014 5:25 PM, Nick Coghlan wrote: > > On 17 Feb 2014 22:25, "M.-A. Lemburg" <mal at egenix.com > <mailto:mal at egenix.com>> wrote: > > default_3way_compare(PyObject *v, PyObject *w) > > ... > > /* None is smaller than anything */ Unless it is not, as with datetimes, perhaps other classes written similarly, and some user class instances. > > Note that it's not important whether None is smaller or greater > > than any other object. The important aspect is that it's sorting > > order is consistent and doesn't raise a TypeError when doing an > > ordered comparison with other objects. > > Thanks, that's enough to persuade me that it is a good idea to restore > that behaviour Would you restore the actual sometimes inconsistent 2.x behavior or implement something new -- what M-A claims but never was? I doubt the former would be trivial since it was part of the now deleted cmp and 3way machinery. To make None a true bottom object, the rich comparison methods would have to special-case None as either argument before looking at the __rc__ special methods of either. Regardless of how implemented, such a change would break user code that defines a Bottom class and depends on Bottom() < None == True. Given the python-ideas discussions about adding a top or bottom class, I expect that such classes are in use. So a deprecation period would be needed, pushing the change off to 3.7. It is also possible that someone took the ending of cross-type comparisons seriously and is depending on the TypeError. while True: x = f(args) try: if x > 10: a(x) else: b(x) except TypeError: # f did not return a number break -- Terry Jan Reedy
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