El operador in (__contains__) de Python devuelve un valor bool, cuyo valor no es Verdadero ni Falso
Como era de esperar, 1 no está contenido por la tupla vacía
>>> 1 in ()
False
pero elFalse
el valor devuelto no es igual aFalse
>>> 1 in () == False
False
Mirándolo de otra manera, elin
operador devuelve unbool
que no es niTrue
niFalse
:
>>> type(1 in ())
<type 'bool'>
>>> 1 in () == True, 1 in () == False
(False, False)
Sin embargo, el comportamiento normal se reanuda si la expresión original está entre paréntesis
>>> (1 in ()) == False
True
o su valor se almacena en una variable
>>> value = 1 in ()
>>> value == False
True
Este comportamiento se observa tanto en Python 2 como en Python 3.
¿Puedes explicar lo que está pasando?