猿问

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

之间有什么区别:


if foo is None: pass


if foo == None: pass

我在大多数Python代码(以及我自己编写的代码)中看到的约定是前者,但是最近我遇到了使用后者的代码。None是NoneType的一个实例(也是唯一的实例,IIRC),所以没关系,对吗?在任何情况下都有可能吗?


蟒蛇


一只甜甜圈
浏览 575回答 3
3回答

MYYA

isTrue如果比较相同的对象实例,则始终返回而==最终由该__eq__()方法确定即>>> class Foo(object):       def __eq__(self, other):           return True>>> f = Foo()>>> f == NoneTrue>>> f is NoneFalse

繁花不似锦

请注意:if foo:  # do something与以下内容不完全相同:if x is not None:  # do something前者是布尔值测试,可以在不同的上下文中评估为false。在布尔值测试中,有很多东西代表假,例如空容器,布尔值。在这种情况下,没有人会得出错误的结论,但其他事情也会发生。
随时随地看视频慕课网APP

相关分类

Python
我要回答