我认为在Python中,==
应该检查是否相等,而is
应该检查身份。
从逻辑的角度来看,我认为not (a == b)
应该等于a != b
。我会忽略什么吗?
我想到两件事:(1)以一种不好的方式实现__ne__
和__eq__
的类(2)带有浮点数/ float('nan')
的东西。但是我找不到两个表达式不相等的示例。他们的字节码不是:
>>> def a(compare):
... return not compare == "in"
>>> def b(compare):
... return compare != "in"
>>> import dis
>>> dis.dis(a)
2 0 LOAD_FAST 0 (compare)
2 LOAD_CONST 1 ('in')
4 COMPARE_OP 2 (==)
6 UNARY_NOT
8 RETURN_VALUE
>>> dis.dis(b)
2 0 LOAD_FAST 0 (compare)
2 LOAD_CONST 1 ('in')
4 COMPARE_OP 3 (!=)
6 RETURN_VALUE