On 17 February 2014 11:14, M.-A. Lemburg <m...@egenix.com> wrote: > On 15.02.2014 07:03, Stephen J. Turnbull wrote: > > M.-A. Lemburg writes: > > > > > IMO, it was a mistake to have None return a TypeError in > > > comparisons, since it makes many typical data operations > > > fail, e.g. > > > > I don't understand this statement. The theory is that they *should* > > fail. > > > > The example of sort is a good one. Sometimes you want missing values > > to be collected at the beginning of a list, sometimes at the end. > > Sometimes you want them treated as top elements, sometimes as bottom. > > And sometimes it is a real error for missing values to be present. > > Not to mention that sometimes the programmer simply hasn't thought > > about the appropriate policy. I don't think Python should silently > > impose a policy in that case, especially given that the programmer may > > have experience with any of the above treatments in other contexts. > > None is special in Python and has always (and intentionally) sorted > before any other object. In data processing and elsewhere in Python > programming, it's used to signal: no value available. > > Python 3 breaks this notion by always raising an exception when > using None in an ordered comparison, making it pretty much useless > for the above purpose. > > Yes, there are ways around this, but none of them are intuitive. > > Here's a particularly nasty case: > > >>> l = [(1, None), (2, None)] > >>> l.sort() > >>> l > [(1, None), (2, None)] > > >>> l = [(1, None), (2, None), (3, 4)] > >>> l.sort() > >>> l > [(1, None), (2, None), (3, 4)] > > >>> l = [(1, None), (2, None), (3, 4), (2, 3)] > >>> l.sort() > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: unorderable types: int() < NoneType() > > Maybe Python 3 should have a couple of None-like objects that compare the way you want: AlwaysComparesLess and AlwaysComparesGreater, but with better names (maybe 'PlusInfinity' and 'MinusInfinity'?). Just leave None alone, please.
> -- > Marc-Andre Lemburg > eGenix.com > > Professional Python Services directly from the Source (#1, Feb 17 2014) > >>> Python Projects, Consulting and Support ... http://www.egenix.com/ > >>> mxODBC.Zope/Plone.Database.Adapter ... http://zope.egenix.com/ > >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ > ________________________________________________________________________ > 2014-02-12: Released mxODBC.Connect 2.0.4 ... http://egenix.com/go53 > > ::::: Try our mxODBC.Connect Python Database Interface for free ! :::::: > > eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 > D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg > Registered at Amtsgericht Duesseldorf: HRB 46611 > http://www.egenix.com/company/contact/ > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > https://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > https://mail.python.org/mailman/options/python-dev/gjcarneiro%40gmail.com > -- Gustavo J. A. M. Carneiro Gambit Research LLC "The universe is always one step beyond logic." -- Frank Herbert
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com