Python中‘==’和‘is’有何区别及原理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计904个文字,预计阅读时间需要4分钟。
`'==` 比较的是两个对象的值 + `'is`' 比较的是两个对象的内存地址(id) + 下面我们来重点理解 'is'。对于这个,我们需要知道: + 小整数对象池 + 大整数对象池 + intern机制 + 小整数池:Python 会预先创建一个小的整数对象池,例如从 -5 到 256 的整数都是直接复用的同一个对象。 + 大整数池:类似地,大整数也有自己的对象池。 + intern机制:某些特定的字符串类型,Python 会自动使用 intern机制,即相同的字符串值只会存在一个实例。 + 小整数池:Python 预先创建了一个小整数对象池,以便于快速访问这些整数对象。
'==' 比较的是两个对象的值
'is' 比较的是两个对象的内存地址(id)
下面我们着重理解 'is'。对于这个,我们需要知道:小整数对象池,大整数对象池,以及intern机制
小整数池:Python预先创建小整数缓存池—— [-5~256],无论创建多少个对象,都是指向同一个地址,这样是为了避免小整数频繁申请和释放内存。
>>> a=3
>>> b=3
>>> a is b
True
>>> 1+2 is 3
True>>> a=1.0
>>> b=1.0
>>> a is b
False
大整数对象池:Python 提供了一个可扩展的内存空间,也叫通用整数对象池,谁需要用就给谁用,免去了申请内存。
本文共计904个文字,预计阅读时间需要4分钟。
`'==` 比较的是两个对象的值 + `'is`' 比较的是两个对象的内存地址(id) + 下面我们来重点理解 'is'。对于这个,我们需要知道: + 小整数对象池 + 大整数对象池 + intern机制 + 小整数池:Python 会预先创建一个小的整数对象池,例如从 -5 到 256 的整数都是直接复用的同一个对象。 + 大整数池:类似地,大整数也有自己的对象池。 + intern机制:某些特定的字符串类型,Python 会自动使用 intern机制,即相同的字符串值只会存在一个实例。 + 小整数池:Python 预先创建了一个小整数对象池,以便于快速访问这些整数对象。
'==' 比较的是两个对象的值
'is' 比较的是两个对象的内存地址(id)
下面我们着重理解 'is'。对于这个,我们需要知道:小整数对象池,大整数对象池,以及intern机制
小整数池:Python预先创建小整数缓存池—— [-5~256],无论创建多少个对象,都是指向同一个地址,这样是为了避免小整数频繁申请和释放内存。
>>> a=3
>>> b=3
>>> a is b
True
>>> 1+2 is 3
True>>> a=1.0
>>> b=1.0
>>> a is b
False
大整数对象池:Python 提供了一个可扩展的内存空间,也叫通用整数对象池,谁需要用就给谁用,免去了申请内存。

