我最近遇到了这种语法,我没有意识到其中的区别。
如果有人能告诉我其中的区别,我将不胜感激。
发布于 2010-07-16 00:55:40
答案是here解释的。
引述如下:
一个类可以自由地以它选择的任何方式实现比较,并且它可以选择与无意义进行比较(这实际上是有意义的;如果有人告诉你从头开始实现无对象,那么你如何让它与自身进行比较呢?)
实际上,没有太大的区别,因为自定义比较运算符很少。但一般情况下,您应该使用is None。
发布于 2010-07-16 02:38:18
class Foo:
def __eq__(self,other):
return True
foo=Foo()
print(foo==None)
# True
print(foo is None)
# False发布于 2010-07-16 00:55:05
在这种情况下,它们是相同的。None是一个单例对象(只存在一个None)。
is检查对象是否为相同的对象,而==只检查它们是否相等。
例如:
p = [1]
q = [1]
p is q # False because they are not the same actual object
p == q # True because they are equivalent但是因为只有一个None,所以它们总是相同的,并且is将返回True。
p = None
q = None
p is q # True because they are both pointing to the same "None"https://stackoverflow.com/questions/3257919
复制相似问题