tutorial example python jython

python - example - ¿Cuál es la diferencia entre "es ninguno" y "== ninguno"



jython vs python (4)

Recientemente me encontré con esta sintaxis, no soy consciente de la diferencia.

Apreciaría si alguien pudiera decirme la diferencia.


En este caso, son lo mismo. None es un objeto singleton (solo existe uno).

is verificaciones para ver si el objeto es el mismo objeto, mientras que == simplemente verifica si son equivalentes.

Por ejemplo:

p = [1] q = [1] p is q # False because they are not the same actual object p == q # True because they are equivalent

Pero dado que solo hay un None , siempre serán los mismos y se devolverá Verdadero.

p = None q = None p is q # True because they are both pointing to the same "None"


La respuesta se explica here .

Citar:

Una clase es libre de implementar la comparación de la manera que elija, y puede elegir hacer una comparación con Ninguna significa algo (lo que en realidad tiene sentido; si alguien le dijo que implementara el objeto Ninguna desde cero, ¿de qué otra manera lo obtendría para comparar la Verdadera ¿Contra sí mismo?).

Hablando en términos prácticos, no hay mucha diferencia ya que los operadores de comparación personalizados son raros. Pero usted debe usar is None como una regla general.


Si usas numpy,

if np.zeros(3)==None: pass

le dará error cuando numpy hace la comparación elementalmente


class Foo: def __eq__(self,other): return True foo=Foo() print(foo==None) # True print(foo is None) # False