Python中的比较运算符,要特别注意的是 == 和 is 的区别

Python中的比较运算符有以下几种

                     x == y      x 等于 y
                     x != y      x 不等于 y
                     x y      x 大于 y
                     x y      x 小于 y
                     x >= y      x 大于等于 y
                     x <= y      x 小于等于 y
                     x is y      x 和 y 是同一个对象 
                     x is not y      x 和 y 不是同一个对象 
                     x in y      x 是 y 的成员
                     x not in y      x 不是 y 的成员

比较运算符用来对两个对象进行比较,Python中的对象有三个属性:

(1)id         身份标识,是对象在内存中的地址,python中用函数id(x)返回对象 x 在内存中的地址

(2)type     数据类型,python中用函数type(x)返回对象 x 的数据类型

(3)value   值


要注意  ==  和  is  的区别

==  是对两个对象的 value 进行比较,比较两个对象的值是否相等

is   是对两个对象的 id 进行比较 ,比较两个对象的内存地址是否相等

看下面的例子:

>>> x = 20

>>> y = 20

>>> z = 10

>>> x == y

True

>>> x is y

True

>>> x == z

False


python 的内存缓存机制会对比较小的对象进行缓存,当创建新的对象时,会先去缓存区查找,如果某个小对象的值和新建对象的值相等,则不开辟新的内存,而是将已经存在的小对象的内存地址赋值给新创建的对象。

看下面的例子:

>>> A = 'abc'

>>> B = 'abc'

>>> A is B

True

>>> A == B

True


再看下面的一个例子,注意和上面例子的区别

>>> listA = [1, 2, 3, 4]

>>> listB = [1, 2, 3, 4]

>>> listA is listB

False

>>> listA == listB

True

下面看一个容易出错的例子:

>>> a = 1
>>> b = 1
>>> a is b
True
>>> c = 300
>>> d = 300
>>> c is d
False

介于[-5,256]之间的整数,值相同的整数都会共享同一个对象,所以不管内存中出现了多少个数值为1的对象,都表示同一个对象,值为300的两个整数在内存中是两个不同的对象

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页