运算符绑定如何在这个Python示例中工作?

时间:2012-03-27 12:08:41

标签: python operator-keyword operator-precedence

我最近偶然发现了这个表达:

True == False in (False,)

评估为False,但我不明白为什么。 True == FalseFalseFalse in (False,)True,因此两者(对我而言)都是合理的可能性

True == (False in (False,))

(True == False) in (False,)
正如我所料,

评估为True。 这里出了什么问题?

1 个答案:

答案 0 :(得分:10)

我认为这是Python比较运算符链接的一个极端情况。它扩展到

 (True == False) and (False in (False,))

评估为False

此行为旨在匹配传统的数学符号(例如x == y == z意味着所有三个都相等,或0 <= x < 10意味着x在[0,10]范围内)。但是in也是一个比较运算符,给出了意想不到的行为。