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