Re: [Python-Dev] python 3 niggle: None < 1 raises TypeError

2014年2月17日 04:27:08 -0800

On 17.02.2014 13:12, Nick Coghlan wrote:
> On 17 Feb 2014 21:15, "M.-A. Lemburg" <[email protected]> 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.
> 
> This is the first I've ever heard of that sorting behaviour being an
> intentional feature, rather than just an artefact of Python 2 allowing
> arbitrarily ordered comparisons between different types. Can you point me
> to the relevant entry in the Python 2 language reference?
This is not documented anywhere in the language spec, AFAIK. It
is documented in the code (Python 2.7; Object/object.c):
default_3way_compare(PyObject *v, PyObject *w)
...
 /* None is smaller than anything */
 if (v == Py_None)
 return -1;
 if (w == Py_None)
 return 1;
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.
-- 
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
[email protected]
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to