当应用于原始值时,我知道b = np.rollaxis(np.asarray(a).reshape(3, 4, 2), 2)
b = np.asarray(a).reshape(2,4,3, order="F").swapaxes(1, 2)
和==
之间的区别。但是对于对象,它们似乎都是简单的身份比较。
===
是否存在比较两个对象为每个操作员提供不同结果的情况,或者它们在功能上是等效的吗?
答案 0 :(得分:2)
是的,将两个对象与==
比较与将它们与===
比较相同。正如将两个字符串与==
进行比较与===
一样。如果值的类型相同,则两种比较方法将得出相同的结果。 As the specification states:
7.2.14抽象平等比较
比较x == y(其中x和y是值)产生true或false。进行这样的比较 如下:
- 如果Type(x)与Type(y)相同,则
- 返回结果 执行严格平等比较x === y。
答案 1 :(得分:1)
看起来像
我知道在javascript中“检查对象是否相等”的唯一方法是深度检查每个可能的键(但即使如此,它也只是鸭子类型检查)
答案 2 :(得分:1)
===
中的extra =确保双方的类型相同。 a
和c
都是相同类型的对象。因此,==
或===
与此处无关。
答案 3 :(得分:-1)
好吧... ===
是“比较身份和类型”。您已确定要比较两个对象(因此“类型”相同),从而留下“比较身份”,与==
相同。
同样,如果比较两个number
,则因为您已经知道它们是同一类型(number
),所以===
与==
相同。在这里,对象与基元没有什么特殊或不同之处。只是对象的唯一类型是object
。