La comparación de valores booleanos con ==
funciona en Python. Pero cuando aplico el not
operador booleano, el resultado es un error de sintaxis:¿Por qué 'verdadero == no es falso' un error de sintaxis en Python?
Python 2.7 (r27:82500, Sep 16 2010, 18:02:00)
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> True == True
True
>>> False == False
True
>>> True is not False
True
>>> True == not False
File "<stdin>", line 1
True == not False
^
SyntaxError: invalid syntax
>>>
Por qué es un error de sintaxis? Esperaría que not False
sea una expresión que devuelva un valor booleano, y True == <x>
para que sea una sintaxis válida siempre que <x>
sea una expresión con sintaxis válida.
Tenga en cuenta que "True is not false" is * not * lo mismo que "True is (not false)". "is not" es un operador distinto, que significa "no es idéntico a", mientras que "True is (false)" dice "True es idéntico a la negación booleana de False". Solo un comentario, porque tu ejemplo parece, como si supieras, que ambos son lo mismo. – lunaryorn
'True == not' es el error de sintaxis real, cualquier cosa después de eso es irrelevante. – dansalmo
Y para el registro, esto falla para ** cualquier ** operador de comparación más 'no', ** independientemente de los tipos comparados **. 'True no 'False'',' 3.3> = not 4.5', '{} no es []', 'set() == not None' y 'slice()! = not lambda: x' ** all ** levanta el mismo error de sintaxis. Esto no está limitado a '== no' y booleanos. –