Select Language

AI社区

AI技术百科

2.7、Python小整数池

本节介绍有关整数池的问题。在 Python 中,整数可以表示的范围很大,但是常用的整数可能都集中在 -1000 到 1000 之间,如考试分数,一般在 0 到 100 之间,年龄也在 0 到 100 之间。

基于整数对象分布不均匀的特性,我们可以做一些优化来提升运行效率。

在 Python 解释器的内部实现中,对于 -5 到 256 内的整数建立了一个小整数池。如果要使用的整数对象在该范围内,其不会自动新建一个整数对象,而是看小整数池中是否有值相同的整数对象:

  • 如果有,则返回这个现有的整数对象;

  • 如果没有,则创建一个新的整数对象,这个新建的整数对象在以后也可能被共享使用。


我们可以使用函数 id() 来查看对象的地址,在 CPython 中,id() 返回的就是某个对象在内存中的地址信息。我们可以比较这个 id 值来查看是否存在这种共享关系。另外也可以用 is 来检查两个对象是否相同。

>>> a = 12      # 创建对象a,值为12
>>> id(a)       # 查看a的id值
8791344854192
>>> b = 11      # 新建对象b,值为11
>>> id(b)       # 查看b的id值
8791344854160   # b的id和a的id是不同的,它们是不同的整数对象
>>> a is b      # 使用is来判断a和b是不是同一个整数对象
False           # 它们的确不是同一个整数对象
>>> b = b + 1   # 重新给b赋值
>>> b           # 查看b的值
12              # b的值和a的值相同,都为12
>>> id(b)       # 查看b现在的id值
8791344854192   # b的id发生了变化,现在和a相同了
>>> a is b      # 用is来检查a和b是否是同一个对象
True            # 它们的确是同一个对象


我要发帖
  • 26

    条内容
Python基本数据类型一共26个章节
本章将介绍 Python 内置的基本数据类型,包括整型、浮点数、字符串、布尔型、列表、元组、集合和字典等 Python 定义的基本数据类型,以及这些数据类型的运算操作。
我们知道,Python 是强类型语言,每个变量在某个时刻的类型是确定的。也就是说,Python 中任意一个存活的对象,其类型是唯一的。不同类型的对象有不同的属性,能完成不同的操作。
另外本章最后还会介绍变量、对象等概念。每个对象都有一个确定的类型,每个变量都指向某个特定的对象。