valores usar true operaciones logicas funcion false exclusivo ejemplos declarar como booleanos bool python python-3.x

usar - ¿Por qué es `True is False== False`, False en Python?



true y false en python (5)

Basado en la documentation Python sobre la precedencia del operador:

Tenga en cuenta que las comparaciones, las pruebas de membresía y las pruebas de identidad, todas tienen la misma prioridad y tienen una función de encadenamiento de izquierda a derecha como se describe en la sección Comparaciones.

Así que en realidad tienes una declaración encadenada como la siguiente:

>>> (True is False) and (False==False) False

Puede suponer que el objeto central se compartirá entre 2 operaciones y otros objetos (Falso en este caso).

Y tenga en cuenta que también es cierto para todas las comparaciones, incluidas las pruebas de membresía y las operaciones de pruebas de identidad que son los siguientes operandos:

in, not in, is, is not, <, <=, >, >=, !=, ==

Ejemplo:

>>> 1 in [1,2] == True False

Esta pregunta ya tiene una respuesta aquí:

¿Por qué es que estas declaraciones funcionan como se espera cuando se utilizan paréntesis?

>>> (True is False) == False True >>> True is (False == False) True

Pero devuelve False cuando no hay corchetes?

>>> True is False == False False



Python interpreta múltiples (in) igualaciones de la forma que cabría esperar en matemáticas:

En Matemáticas a = b = c significa todos a = b , b = c y a = c .

Así que True is False == False significa True == False y False == False y True == False , que es False .

Para constantes booleanas, es equivalente a == .


Python tiene una propiedad transitiva única cuando se trata de operadores de comparación. Será más fácil de ver en un caso más sencillo.

if 1 < x < 2: # Do something

Esto hace lo que parece. Comprueba si 1 <x y si x <2. Lo mismo está sucediendo en su código no entre paréntesis.

>>> True is False == False False

Está comprobando si Verdad es falso y Falso == Falso, solo uno de los cuales es verdadero.


Python realiza el encadenamiento si encuentra operadores de la misma prioridad al evaluar una expresión.

comparaciones, incluidas las pruebas, que tienen la misma cadena de precedencia de izquierda a derecha

Los operadores mencionados a continuación tienen la misma prioridad.

in, not in, is, is not, <, <=, >, >=, <>, !=, ==

Entonces, cuando Python intenta evaluar la expresión True is False == False , encuentra que los operadores is y == que tienen la misma prioridad, por lo que realiza el encadenamiento de izquierda a derecha.

Entonces, la expresión True is False == False realidad se evalúa como:

(True is False) and (False == False)

dando False como la salida.