之间有什么区别: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

繁花不似锦
TA贡献1851条经验 获得超4个赞
请注意:
if foo:
# do something
与以下内容不完全相同:
if x is not None:
# do something
前者是布尔值测试,可以在不同的上下文中评估为false。在布尔值测试中,有很多东西代表假,例如空容器,布尔值。在这种情况下,没有人会得出错误的结论,但其他事情也会发生。
添加回答
举报
0/150
提交
取消