Python == vs运算符的优势

时间:2018-11-13 08:06:37

标签: python python-3.x python-2.7

我有点困惑为什么下面的代码

str1 = "text"
str2 = "some longer text"
if str1 in str2 == True:
    pass # do something

不起作用。 (我知道我可以通过编写if str1 in str2 == True:轻松解决此问题-这不是问题!)

问题是,为什么

str1 in str2 == True

返回False吗?我的意思是,如果运算符in==运算符强,我将获得以下代码

if (str1 in str2) == True:

这实际上是有效的(因为它将被评估为True)...反之,==运算符比in运算符更强大,我希望TypeError: argument of type 'bool' is not iterable异常。实际上是代码

if a = "" in ("" == True):

提出了这样的例外。那么Python在这里做什么呢?首先评估哪个运算符(in==)?结果为何False

a = ("" in "" == True)

而不是True或TypeError:类型'bool'的参数不可迭代Exception? The only way I could imagine the错误`的结果是Python试图同时执行两个运算符。但是那怎么运作呢?

我注意到的事情:

  • Python2和Python3都显示相同的结果。
  • 语句"" in "" == ""实际上返回True
  • 如果您输入代码a = ("" in "" == True),则type(a)将产生<type 'bool'>。因此,结果实际上是一个布尔值-如预期的那样-而不是某种其他对象。不过,print(a)的结果是False

0 个答案:

没有答案