python's is&==区别

python's is&==区别

  通常我们写:  

1 if foo is None: pass

  这个写法与以下的写法有何区别呢?  

1 if foo == None: pass

  is当比较的是相同的对象实例时总是返回True。而==则完全决定于__eq__()方法的实现。例如:

1 >>> class foo(object):
2        def __eq__(self, other):
3            return True
4  
5 >>> f = foo()
6 >>> f == None
7 True
8 >>> f is None
9 False

参考:http://www.codecho.com/comparison-in-python/

原文地址:https://www.cnblogs.com/tekkaman/p/3452805.html