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

“ foo is None”和“ foo == None”之间有什么区别吗?

“ foo is None”和“ foo == None”之间有什么区别吗?

一只甜甜圈 2019-11-22 15:16:15
之间有什么区别:if foo is None: pass和if foo == None: pass我在大多数Python代码(以及我自己编写的代码)中看到的约定是前者,但是最近我遇到了使用后者的代码。None是NoneType的一个实例(也是唯一的实例,IIRC),所以没关系,对吗?在任何情况下都有可能吗?蟒蛇
查看完整描述

3 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

isTrue如果比较相同的对象实例,则始终返回


而==最终由该__eq__()方法确定




>>> class Foo(object):

       def __eq__(self, other):

           return True


>>> f = Foo()

>>> f == None

True

>>> f is None

False


查看完整回答
反对 回复 2019-11-22
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

请注意:


if foo:

  # do something

与以下内容不完全相同:


if x is not None:

  # do something

前者是布尔值测试,可以在不同的上下文中评估为false。在布尔值测试中,有很多东西代表假,例如空容器,布尔值。在这种情况下,没有人会得出错误的结论,但其他事情也会发生。


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号