参考链接:
Python的小整数池
Python中的小整数对象池和大整数对象池,以及“is” 和“==”的区别
小整数池目的:节省内存,提高执行效率
需要注意的是:Python实现int的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被垃圾回收机制回收。
以下是在jupyter notebook下的输出结果
大整数对象池:
超出小整数的范围即为大整数,每次都会创建一个新的对象。但是处于一个代码块的大整数是同一个对象。(具体看下面的代码演示)
但是在pycharm中情况有所不同的
在pycharm中运行python程序时,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究。
a = 1000
b = 1000
print(a is b)