None < 0 ???
Oswaldo Hernández
listas en soft-com.es
Mie Ene 2 23:08:29 CET 2008
Arnau Sanchez escribió:
> Oswaldo Hernández escribió:
>
>> Si la definición de None es la ausencia de valor, la expresión None <
>> 1 ¿no deberia ser tambien false?
>
> Como "None" no implementa las "rich comparisons" (__gt__, __lt__, etc)
> no tiene mucho sentido compararlo con otros objetos. Al respecto la
> documentación dice:
>
> http://docs.python.org/ref/comparisons.html
>
> "The operators <, >, ==, >=, <=, and != compare the values of two
> objects. The objects need not have the same type. If both are numbers,
> they are converted to a common type. Otherwise, objects of different
> types always compare unequal, and are ordered consistently but
> arbitrarily."
>
> Sólo se le pide ser consistente, así que el resultado depende de la
> implementación. Si miramos las fuentes, en CPython vemos:
>
> (Objects/object.c)
>
> /* None is smaller than anything */
> if (v == Py_None)
> return -1;
> if (w == Py_None)
> return 1;
>
> Lo que explica el comportamiento que observas.
Ok, ya esta mas claro.
El problema es que asocio None con el NULL de la base de datos, si en PostgreSQL ejecuto:
select case
when null = 0 then 'cero'
when null > 0 then 'positivo'
when null < 0 then 'negativo'
else 'nulo'
end
El resultado es:
'nulo'
Ahora veo que None no es lo mismo que NULL.
Gracias.
--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es