和None比较时候永远使用is

和None比较时候永远使用is

和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 和 == 的使用更安全。

Viewpoint #

From #

26 | 活都来不及干了,还有空注意代码风格?!