1. id():获取的是对象在内存中的地址
2. is :比对2个变量的对象引用(对象在内存中的地址,即id() 获得的值)是否相同。如果相同则返回True,否则返回False。换句话说,就是比对2个变量的对象引用是否指向同一个对象。
3. ==:比对2个变量指向的对象的内容是否相同。
下面通过cmp函数比较两个对象的差异:
1 class MyClass(object): 2 def __init__(self, name): 3 self.name = name 4 5 def __cmp__(self, other): 6 return cmp(self.name, other.name) 7 8 9 10 a = MyClass('leon')11 b = MyClass('leon')12 print a is b13 print a == b14 print id(a)15 print id(b)16 print cmp(a, b)
先看cmp函数的用法,原型为cmp(x, y),作用是比较两个对象x,y,如果x大于y返回正数,相等则返回0,否则返回负数,示例里MyClass类用了__cmp__,用以自定义比较对象,如果注释此方法,个人认为默认为会比较a,b对象的id值。