有什么区别:
if foo is None: pass
和
if foo == None: pass
我在大多数 Python 代码(以及我自己编写的代码)中看到的约定是前者,但我最近遇到了使用后者的代码。None 是 NoneType 的一个实例(也是唯一的实例,IIRC),所以没关系,对吧?有没有可能的情况?
is``True如果比较相同的对象实例,总是返回
is``True
而==最终由__eq__()方法决定
==
__eq__()
IE
>>> class Foo(object): def __eq__(self, other): return True >>> f = Foo() >>> f == None True >>> f is None False