Как и ожидалось, 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.
Можете ли вы объяснить, что происходит?