首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"is None“和"== None”有什么区别?

"is None“和"== None”有什么区别?
EN

Stack Overflow用户
提问于 2010-07-16 00:52:11
回答 5查看 245K关注 0票数 419

我最近遇到了这种语法,我没有意识到其中的区别。

如果有人能告诉我其中的区别,我将不胜感激。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-07-16 00:55:40

答案是here解释的。

引述如下:

一个类可以自由地以它选择的任何方式实现比较,并且它可以选择与无意义进行比较(这实际上是有意义的;如果有人告诉你从头开始实现无对象,那么你如何让它与自身进行比较呢?)

实际上,没有太大的区别,因为自定义比较运算符很少。但一般情况下,您应该使用is None

票数 377
EN

Stack Overflow用户

发布于 2010-07-16 02:38:18

代码语言:javascript
复制
class Foo:
    def __eq__(self,other):
        return True
foo=Foo()

print(foo==None)
# True

print(foo is None)
# False
票数 193
EN

Stack Overflow用户

发布于 2010-07-16 00:55:05

在这种情况下,它们是相同的。None是一个单例对象(只存在一个None)。

is检查对象是否为相同的对象,而==只检查它们是否相等。

例如:

代码语言:javascript
复制
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。

代码语言:javascript
复制
p = None
q = None
p is q # True because they are both pointing to the same "None"
票数 62
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3257919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档