“is None”和“== None”之间的区别是什么?
我最近遇到这个语法,我不知道其中的差别。
如果有人能告诉我不同,我将不胜感激。
答案在这里解释。
去引用:
一个类可以自由地执行比较任何它select的方式,它可以select做比较None意味着什么(这实际上是有道理的;如果有人告诉你从零开始实现None对象,你会怎么得到它比较真反对自己?)。
实际上,自定义比较运算符很less,没有太大的区别。 但是你应该使用is None
作为一般规则。
class Foo: def __eq__(self,other): return True foo=Foo() print(foo==None) # True print(foo is None) # False
在这种情况下,他们是一样的。 None
一个是单身物件(只存在一个None
)。
检查对象是否是相同的对象,而==只是检查它们是否相等。
例如:
p = [1] q = [1] p is q # False because they are not the same actual object p == q # True because they are equivalent
但是既然只有一个None
,他们将永远是一样的,并且会返回True。
p = None q = None p is q # True because they are both pointing to the same "None"
如果你使用numpy,
if np.zeros(3)==None: pass
当numpy做元素比较时会给你错误