Python中‘==’和‘is’有何区别及原理?

2026-05-16 21:290阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计904个文字,预计阅读时间需要4分钟。

Python中‘==’和‘is’有何区别及原理?

`'==` 比较的是两个对象的值 + `'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分钟。

Python中‘==’和‘is’有何区别及原理?

`'==` 比较的是两个对象的值 + `'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 提供了一个可扩展的内存空间,也叫通用整数对象池,谁需要用就给谁用,免去了申请内存。

阅读全文
标签:两个