在写程序时候,我们要比较的对象有好几种,比如字符串,数字,对象等
在比较时候,用的比较操作符就是is、==和cmp() (cmp函数在python3中取消掉了,用了别的函数代替,下面会讲)。
首先要了解Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。
1、is
is 用来判断是否是同一个对象(判断对象的id),is 是种很特殊的语法,你在其它的语言应该不会见到这样的用法。
为什么说is是比较对象呢,这就涉及到python中变量赋值的机制了,python中变量赋值是将变量的名称指向内存的一个区域。比如图中a=12,系统在内存中一个区域创建了一个区域值为12,a指向了那个区域,创建b时候,系统不会开辟新的内存区域,而是将b也指向了那个区域,所以它俩的id值相同。
所以,is其实是比较两个变量名是否指向内存中同一个区域。如果是同一个区域,返回true,否则返回false。
但是,is也有例外,如下:
我也不知道为啥……,反正少用is比较这种字符串吧,网上有大神解释,没看懂。有了解的欢迎告诉我。
2、==, == 用来判断两个对象的值是否相等value
== 可以用来判断字符串相等,也可以用来判断数字相等
用法如下:
比较数字:
比较字符串:
3、cmp() (python3已经移除,以后就不要用了)
cmp(x,y) 函数用于比较2个对象,相当于'==',如果 x y 返回
简单用法:
>>>cmp(1,0)
1
>>>cmp(1,1)
>>>cmp(1,2)
-1
>>>cmp('a','b')
-1
>>>cmp('abc','ab')
1 #因为'abc'的长度大于'ab',所以判定'abc'>'ab'
下面是使用cmp比较数据
>>> list1 = [1,2,3]
>>> list2 = [1,2,3]
>>> cmp(list1,list2)
>>> list2[2] = 4
>>> cmp(list1,list2)
-1
>>> list1 = ['abc','a']
>>> list2 = ['abc',1]
>>> cmp(list1,list2)
1
>>> list2[1] = 'b'
>>> cmp(list1,list2)
-1
>>> list2[1] = True
>>> cmp(list1,list2)
1
Python 3.X 的版本中已经没有 cmp 函数,如果你需要实现比较功能,需要引入 operator 模块,适合任何对象,包含的方法有:
lt(a,b) 相当于 a
le(a,b)相当于a
eq(a,b)相当于a==b (字母完全一样,返回True,)
ne(a,b)相当于a!=b
gt(a,b)相当于a>b
ge(a,b)相当于 a>=b
函数的返回值是布尔
总结:
Is 用来比较两个变量在内存中是否指向同一个位置,即两个对象是否相同(id,值)。
== 比较两个对象的值,适用于比较数值和字符串。
Cmp 相当于== python3中已经弃用。
以上内容如有错误之处,欢迎大神使劲喷。
码字不易,多多关照。
领取专属 10元无门槛券
私享最新 技术干货