Оператор Python in (__contains__) возвращает значение типа bool, значение которого не равно True или False
Как и ожидалось, 1 не содержится в пустом кортеже
>>> 1 in ()
False
ноFalse
возвращаемое значение не равноFalse
>>> 1 in () == False
False
Глядя на это по-другому,in
оператор возвращаетbool
который не является ниTrue
ни:False
>>> type(1 in ())
>>> 1 in () == True, 1 in () == False
(False, False)
Однако нормальное поведение возобновляется, если исходное выражение заключено в скобки
>>> (1 in ()) == False
True
или его значение хранится в переменной
>>> value = 1 in ()
>>> value == False
True
Такое поведение наблюдается как в Python 2, так и в Python 3.
Можете ли вы объяснить, что происходит?