我正在看Google,但是找不到答案。
if 5 != 10:
print('True')
# True
if not 5 == 10:
print('True')
# True
两者似乎都一样。什么时候使用“ not ==”,什么时候使用“!=”?
答案 0 :(得分:4)
这些语句等效,只要==
返回!=
的逻辑逆。对于大多数数据类型,这是一个有效的假设,但是Python允许专门实现==
和!=
(==
的{{3}}和{{1}的__eq__
}。因此,这实际上取决于您使用的数据类型。
!=
和==
甚至可能不返回布尔值,它们甚至不必返回相同的数据类型。这为自定义结果提供了另一种可能性:通过__ne__
,可以通过truth value testing(或Python 2中的!=
)方法(除其他方法外)自定义
但是对于整数,两种方法都是等效的。但是,我将始终使用__nonzero
方法。意图更清楚,时间更短。
仅举一个语句不相等的示例,让我们以实现了!=
和{{1的数据类型,例如NumPy数组(只是为了命名以不同方式实现运算符的流行数据结构)命名}}返回另一个包含布尔值的NumPy数组,并实现==
引发异常:
!=
但是如果您在__bool__
中使用了其中任何一个,都会引发异常。
答案 1 :(得分:3)
在与两个整数进行比较的情况下,它们是相同的。最好将reload!
设为pythonic。
如果任一操作数是自定义类的实例,则结果可能会有所不同。自定义类可以自由地独立重写!=
和==
运算符(即使是疯狂的结果)
从LHS:
!=
从RHS:
>>> class A:
... def __eq__(self, other):
... return False
... def __ne__(self, other):
... return False
...
>>> a = A()
>>> a != 5
False
>>> not a == 5
True
答案 2 :(得分:-2)
正如您在结果中看到的,两者含义相同,检查一个值是否与另一个值不同,这是一个优先事项...