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

Tur*_*ion 8 python operator-precedence operator-keyword

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

True == False in (False,)
Run Code Online (Sandbox Code Playgroud)

它评估False,但我不明白为什么. True == FalseFalseFalse in (False,)True,所以(对我来说)两者都是合理的可能性

True == (False in (False,))
Run Code Online (Sandbox Code Playgroud)

(True == False) in (False,)
Run Code Online (Sandbox Code Playgroud)

True按照我的预期评估.这里出了什么问题?

Mec*_*ail 10

我相信这是Python的比较运算符链接的一个极端情况.它扩展到了

 (True == False) and (False in (False,))
Run Code Online (Sandbox Code Playgroud)

评估为False.

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