('ab'中的'a'= = True)评估为False

时间:2015-07-18 04:31:41

标签: python python-2.x logical-operators

这是我在摆弄python解释器时所得到的

[mohamed@localhost ~]$ python
Python 2.7.5 (default, Apr 10 2015, 08:09:14) 
[GCC 4.8.3 20140911 (Red Hat 4.8.3-7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 'a' in 'abc'
True
>>> 'a' in 'abc' == True
False
>>> 'a' in 'abc' == False
False 
>>> ('a' in 'abc') == True
True
>>> ('a' in 'abc') == False
False


>>> ('a' in 'abc' == True) or ('a' in 'abc' == False)
False
>>> (('a' in 'abc') == True) or (('a' in 'abc') == False)
True

我的问题是为什么使用括号为我提供了预期的,更符合逻辑的声音输出?

1 个答案:

答案 0 :(得分:8)

由于操作员链接,in==表现不佳。

'a' in 'abc' == True

转换为 -

'a' in 'abc' and 'abc' == True

来自documentation的参考 -

  

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

in==也发生类似情况。