【问题标题】:('a' in 'abc' == True) evaluates to False [duplicate]('abc' 中的'a' == True) 计算结果为 False [重复]
【发布时间】:2015-07-18 04:31:41
【问题描述】:

这是我在摆弄 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

我的问题是为什么使用括号会给我预期的、更合乎逻辑的输出?

【问题讨论】:

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


【解决方案1】:

由于运算符链接,in== 不能很好地结合在一起。

'a' in 'abc' == True

转换为 -

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

来自documentation的参考-

比较可以任意链接,例如 x ,除了 y 只计算一次(但在这两种情况下 z 都是当发现 x

in== 也会发生类似的情况。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-05
  • 2018-12-27
  • 2018-03-08
  • 1970-01-01
相关资源
最近更新 更多