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