2012-05-03 6 views
7

Me di cuenta hoy mientras escribía algo de Python que se podría escribir el operador de desigualdad como a!=b o not a==b. Esto me dio curiosidad:Desigualdades de Python:! = Vs not ==

  1. ¿Ambas maneras se comportan exactamente igual, o hay algunas diferencias sutiles?
  2. ¿Hay alguna razón para usar una sobre la otra? ¿Se usa uno más comúnmente que el otro?

Respuesta

14
  1. == invoca __eq__(). != invoca __ne__() si existe, de lo contrario es equivalente a not ==.
  2. No a menos que importe la diferencia en 1.
7

Sea consciente de sus paréntesis.

>>> not "test" == True 
True 
>>> not "test" and True 
False 

== tiene prioridad sobre not. Pero not y and tienen la misma prioridad, por lo

Python Operators Precedence

+0

¿Seguro? 'not 'test' == True' se evalúa como True, mientras que' (not 'test') == True' se evalúa como False, por lo que parece que 'not a == b' se evalúa como' not (a == b) '. –

+0

Estaba usando Y cuando estaba jugando con la afirmación. – JustinDanielson

+0

Esta respuesta es 'no es verdad == verdadero' – Alain