我注意到以下奇怪行为:
'a' in 'a' == True # Returns False
('a' in 'a') == True # Returns True
'a' in ('a' == True) # throws TypeError
如何解析第一个表达式?括号的两个位置产生不同的结果。 (Python 3.6)
答案 0 :(得分:2)
来自the docs:
请注意,比较,成员资格测试和身份测试都具有相同的优先级,并且具有Comparisons部分中所述的从左到右的链接功能。
in
和==
分别是成员运算符和比较运算符。
从比较中:
...
a < b < c
之类的表达式具有数学上的常规解释:[...]
比较可以任意链接,例如,
x < y <= z
等效于x < y and y <= z
,除了y
仅被评估一次(但在两种情况下,z
都不被评估)全部x < y
被发现为假)。