Python比较怪异[重复]
Posted
技术标签:
【中文标题】Python比较怪异[重复]【英文标题】:Python comparison weirdness [duplicate] 【发布时间】:2021-11-18 17:47:49 【问题描述】:我有一个对象,我需要比较它的一些属性,但我无法解释发生了什么,但以下是我的 VS 代码调试器的输出(我在每个输出之前添加了 '=')
(0 > 55000 | 150 > 280)
=False # expected
250>150
=True # expected
True & False
=False # expected
(250>150 & (0 > 55000 | 150 > 280))
=True # what????
【问题讨论】:
布尔或是or
,而不是|
。
与and
和&
相同。
(如果你习惯 NumPy 和 Pandas 使用 |
和 &
,那是因为 or
和 and
由于短路问题是不可重载的。)
【参考方案1】:
对于数字,&
是“按位与”,|
是“按位或”。这些运算符的优先级高于>
和<
等比较运算符。
150 & (0 > 55000 | 150 > 280)
== 150 & 0
== 0
那么150>0
就是True
。
【讨论】:
【参考方案2】:您正在使用 binary bitwise operators &
和 |
。
你应该使用boolean operatorsand
和or
。
【讨论】:
【参考方案3】:|和 & 是位运算符。位运算符比比较运算符具有更高的优先级。你应该改变'|'到“或”和“&”到“和”
【讨论】:
以上是关于Python比较怪异[重复]的主要内容,如果未能解决你的问题,请参考以下文章