“==” 与 “is” 的关系
== 表示对值的比较
‘is’ 表示对id 的比较,也可以说是对实例进行比较
例:
>>> a = 1
>>> b = 1
>>> a== b
True
>>> a is b
True
>>> a = 256
>>> b = 256
>>> a ==b
True
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a == b
True
>>> a is b
False
>>> id(a)
47478144
>>> id(b)
47478064
>>>
对于‘is’可以对部分数值进行比较,是因为python的机制:
因为出于对性能的考虑,Python内部做了很多的优化工作,对于整数对象,Python把一些频繁使用的整数对象缓存起来,保存到一个叫small_ints的链表中,在Python的整个生命周期内,任何需要引用这些整数对象的地方,都不再重新创建新的对象,而是直接引用缓存中的对象。
Python把这些可能频繁使用的整数对象规定在范围[-5, 256]之间的小对象放在small_ints中,但凡是需要用些小整数时,就从这里面取,不再去临时创建新的对象。
以上,可知:对于‘is’对[-5,256]范围内的数值进行比较,得到的结果为‘True’;超过此范围,结果为‘False’。