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

本文详细介绍了Python中对象的比较方式,包括使用id()、is、==和cmp函数进行对象引用和内容的比较,并通过自定义类的__cmp__方法展示了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值。

转载于:https://www.cnblogs.com/bjdxy/archive/2012/12/04/2801915.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值