==
用来判断两个对象是否相等
is
用来判断两个引用是否指向同一个对象
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a == b
True
>>> a is b
False
注意:
>>> a = 300
>>> b = 300
>>> a == b
True
>>> a is b
False
>>> id(a)
2525676797776
>>> id(b)
2525679431184
>>> a = 100
>>> b = 100
>>> a == b
True
>>>a is b
True
# 为什么???
>>> id(a)
1846770240
>>> id(b)
1846770240
从结果可以看到当a、b为100时,a is b
也为 True
出现这样的结果是因为 Python 的垃圾回收机制中小数对象池的存在,Python中为了优化速度,会把 [-5, 256] 之间的数据提前存在小整数对象池中,程序只要用到 [-5, 256] 之间的数据不再重新创建一份,都是直接指向对象池中同一份数据,这个区间以外的数据,每次使用都会重新分配一块内存来存储数据。