和None比较时候永远使用is #
你可以自己先判断一下运行结果。
# 错误示例
x = MyObject()
print(x == None)
打印结果是 False 吗?不一定。因为对于类来说,== 的结果,取决于它的 eq() 方法的具体实现。MyObject 的作者完全可能这样实现:
class MyObject(object):
def __eq__(self, other):
if other:
return self.field == other.field
return True
正确的是在代码风格中,当你和 None 比较时候永远使用 is:
# 正确示例
x = MyObject()
print(x is None)
上面两个例子,我简单介绍了通过编程风格的限制,让 is 和 == 的使用更安全。