
Python is 和 == 区别
Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。
is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。
==是python标准操作符中的比较操作符,用来比较判断两个对象的value是否相等,例如下面两个字符串间的比较:
a = 'test'
b = 'test'
a == b
True
is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。
x = y = [1,2,3,4,5]
z = [1,2,3,4,5]
print(f'x == y {x == y}')
print(f'x == z {x == z}')
print(f'x is y {x is y}')
print(f'x is z {x is z}')
print(f'id of x {id(x)}')
print(f'id of y {id(y)}')
print(f'id of z {id(z)}')
x == y True
x == z True
x is y True
x is z False
id of x 140064660660680
id of y 140064660660680
id of z 140064660610888
Python 小整数池
python为了避免平凡调用,在解释器运行时便开辟了小整数池,范围在[-5,257),同理字符串对象也有一个类似的缓冲池。
只有数值型和字符串型,并且在通用对象池中的情况下,a is b才为True,否则当a和b是int,string,tuple,list,dict或set型时,a is b均为False。




近期评论