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的两个整数在内存中是两个不同的对象