我最近偶然发现了这个表达:
True == False in (False,)
评估为False
,但我不明白为什么。
True == False
为False
,False in (False,)
为True
,因此两者(对我而言)都是合理的可能性
True == (False in (False,))
和
(True == False) in (False,)
正如我所料,评估为True
。
这里出了什么问题?
答案 0 :(得分:10)
我认为这是Python比较运算符链接的一个极端情况。它扩展到
(True == False) and (False in (False,))
评估为False
。
此行为旨在匹配传统的数学符号(例如x == y == z
意味着所有三个都相等,或0 <= x < 10
意味着x
在[0,10]范围内)。但是in
也是一个比较运算符,给出了意想不到的行为。