sino - ¿X== x alguna vez es falso en Python?
operadores relacionales en python (3)
De acuerdo con el estándar IEEE 754, not-a-number (NaN) siempre debe comparar false, sin importar en qué se compara.
Python 2.7.2+ (default, Oct 4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x=float("NaN")
>>> x==x
False
Me encontré con esta línea de código en la fuente de SciPy, en el módulo de estadísticas :
return 1.0*(x==x)
¿Es este retorno algo diferente a 1.0
? En otras palabras, ¿hay algún valor de x tal que x == x
contenga False
?
Un tipo definido por el usuario puede anular el operador de igualdad para hacer lo que desee:
Python 3.2.2 (default, Feb 10 2012, 09:23:17)
[GCC 4.4.5 20110214 (Red Hat 4.4.5-6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class A:
... def __eq__(self, other):
... return False
...
>>> x=A()
>>> x==x
False
eso depende del valor de x. No he visto la fuente, pero digamos que haces algo como esto:
class A:
def __eq__(self,other):
return bool(random.getrandbits(1))
x = A()
ahora x == x
puede devolver falso.