python is id == 的差别,cmp方法

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 b 13 print a == b 14 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值。

posted @ 2012-12-04 18:50  践道者  阅读(2417)  评论(0编辑  收藏  举报