为了账号安全,请及时绑定邮箱和手机立即绑定

“是无”和“==无”之间的区别是什么?

“是无”和“==无”之间的区别是什么?

POPMUISE 2019-08-01 16:04:48
“是无”和“==无”之间的区别是什么?我最近遇到了这种语法,我不知道它的区别。如果有人能告诉我差异,我将不胜感激。
查看完整描述

3 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

答案在这里解释。

报价:

一个类可以按照它选择的任何方式自由地实现比较,并且它可以选择与None进行比较意味着什么(实际上是有意义的;如果有人告诉你从头开始实现None对象,那么你怎么能得到它来比较True反对自己?)。

实际上,由于自定义比较运算符很少,因此差别不大。但你应该is None作为一般规则使用。


查看完整回答
反对 回复 2019-08-01
?
不负相思意

TA贡献1777条经验 获得超10个赞

class Foo:

    def __eq__(self,other):

        return True

foo=Foo()


print(foo==None)

# True


print(foo is None)

# False


查看完整回答
反对 回复 2019-08-01
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞


在这种情况下,它们是相同的。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"


查看完整回答
反对 回复 2019-08-01
  • 3 回答
  • 0 关注
  • 525 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信