Python的操作顺序涉及“ in”和“ ==“

时间:2018-07-23 02:45:31

标签: python

我注意到以下奇怪行为:

'a' in 'a' == True # Returns False
('a' in 'a') == True # Returns True
'a' in ('a' == True) # throws TypeError

如何解析第一个表达式?括号的两个位置产生不同的结果。 (Python 3.6)

1 个答案:

答案 0 :(得分:2)

来自the docs

  

请注意,比较,成员资格测试和身份测试都具有相同的优先级,并且具有Comparisons部分中所述的从左到右的链接功能。

in==分别是成员运算符和比较运算符。

从比较中:

  

... a < b < c之类的表达式具有数学上的常规解释:

     

[...]

     

比较可以任意链接,例如,x < y <= z等效于x < y and y <= z,除了y仅被评估一次(但在两种情况下,z都不被评估)全部x < y被发现为假)。