Oops, I misunderstood what you said. I understood that it was now the case that objects of different types are not comparable by default whereas you meant it as a planned feature for version 3.
I really hope that it will indeed be the case for version 3. Francis Girard Le jeudi 27 Janvier 2005 21:29, Steven Bethard a écrit : > Francis Girard wrote: > > Le jeudi 27 Janvier 2005 20:16, Steven Bethard a écrit : > >>flamesrock wrote: > >>>The statement (1 > None) is false (or any other value above 0). Why is > >>>this? > >> > >>What code are you executing? I don't get this behavior at all: > >> > >>py> 100 > None > >>True > >>py> 1 > None > >>True > >>py> 0 > None > >>True > >>py> -1 > None > >>True > >>py> -100 > None > >>True > > > > Wow ! What is it that are compared ? I think it's the references (i.e. > > the adresses) that are compared. The "None" reference may map to the > > physical 0x0 adress whereas 100 is internally interpreted as an object > > for which the reference (i.e. address) exists and therefore greater than > > 0x0. > > > > Am I interpreting correctly ? > > Actually, I believe None is special-cased to work like this. From > object.c: > > static int > default_3way_compare(PyObject *v, PyObject *w) > { > ... > if (v->ob_type == w->ob_type) { > ... > Py_uintptr_t vv = (Py_uintptr_t)v; > Py_uintptr_t ww = (Py_uintptr_t)w; > return (vv < ww) ? -1 : (vv > ww) ? 1 : 0; > } > ... > /* None is smaller than anything */ > if (v == Py_None) > return -1; > if (w == Py_None) > return 1; > ... > } > > So None being smaller than anything (except itself) is hard-coded into > Python's compare routine. My suspicion is that even if/when objects of > different types are no longer comparable by default (as has been > suggested for Python 3.0), None will still compare as smaller than > anything... > > Steve -- http://mail.python.org/mailman/listinfo/python-list