Python!=操作与“不是”

在对此问题的评论中,我看到了一条建议使用的声明


result is not None


result != None

我想知道两者之间的区别是什么,为什么要推荐一个而不是另一个?


ibeautiful
浏览 361回答 3
3回答

红糖糍粑

==是一项平等测试。它检查右侧和左侧是否是相等的对象(根据它们__eq__或__cmp__方法)。is是身份测试。它检查右侧和左侧是否是同一对象。没有方法调用完成,对象不能影响is操作。您将is(和is not)用于单例,例如None,您不在乎可能假装为的对象,None或者在与之比较时要防止对象破裂的地方None。

幕布斯7119047

考虑以下:class Bad(object):    def __eq__(self, other):        return Truec = Bad()c is None # False, equivalent to id(c) == id(None)c == None # True, equivalent to c.__eq__(None)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python