Python入门基础之比较操作符is、=以及cmp函数的区别

在写程序时候,我们要比较的对象有好几种,比如字符串,数字,对象等

在比较时候,用的比较操作符就是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中已经弃用。

以上内容如有错误之处,欢迎大神使劲喷。

码字不易,多多关照。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180309A1O5H600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券