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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta