奇怪的行为:Python中的“12in[12,13,14]==True”是什么意思

我本来希望它在左边或右边有括号。

但它似乎在做别的事情!

>>> 12 in [12,13,14] == True
False
>>> (12 in [12,13,13]) == True
True
>>> 12 in ([12,13,14] == True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable

回答

以下表达式的计算结果为 False 可能令人惊讶:

12 in [12,13,14] == True

这是发生的事情:inand==运算符具有相同的优先级,并且它们支持从左到右的链接(请参阅文档),因此表达式等效于

12 in [12,13,14] and [12,13,14] == True

Nowand绑定较少,左侧显然评估为
True。现在对于棘手的部分:一个非空序列,如[12,13,14]列表求值True,但它是不等于True。这就是所谓的“真实”值。Truthy 和 Falsy 值不是布尔值(不是 bool 类型的实例),但它们的计算结果为TrueFalse

所以他们在and比较的右侧评估为False


以上是奇怪的行为:Python中的“12in[12,13,14]==True”是什么意思的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>