1. 小整数对象池

整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。

Python 对小整数的定义是 [-5, 257) 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,所有位于这个范围内的整数使用的都是同一个对象.

同理,单个字母也是这样的。

但是当定义2个相同的字符串时,引用计数为0,触发垃圾回收

2. 大整数对象池

每一个大整数,均创建一个新的对象。

3. intern机制

a1 = "HelloWorld"
a2 = "HelloWorld"
a3 = "HelloWorld"
a4 = "HelloWorld"
a5 = "HelloWorld"
a6 = "HelloWorld"
a7 = "HelloWorld"
a8 = "HelloWorld"
a9 = "HelloWorld"

python会不会创建9个对象呢?在内存中会不会开辟9个”HelloWorld”的内存空间呢? 想一下,如果是这样的话,我们写10000个对象,比如a1=”HelloWorld”…..a1000=”HelloWorld”, 那他岂不是开辟了1000个”HelloWorld”所占的内存空间了呢?如果真这样,内存不就爆了吗?所以python中有这样一个机制——intern机制,让他只占用一个”HelloWorld”所占的内存空间。靠引用计数去维护何时释放。

总结

  • 小整数[-5,257)共用对象,常驻内存
  • 单个字符共用对象,常驻内存
  • 单个单词,不可修改,默认开启intern机制,共用对象,引用计数为0,则销毁
  • 字符串(含有空格),不可修改,没开启intern机制,不共用对象,引用计数为0,销毁
  • 大整数不共用内存,引用计数为0,销毁
  • 数值类型和字符串类型在 Python 中都是不可变的,这意味着你无法修改这个对象的值,每次对变量的修改,实际上是创建一个新的对象

Python的小整数对象池相关推荐

  1. python求5_python(五)——运算符,小整数对象池

    1.成员运算符,判断某个东西是否在某个东西里包含:in,not in name = "abcd" if "ac" inname:print("ok&q ...

  2. python整数池_【Python】Python中神奇的小整数对象池和大整数对象池

    小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立 ...

  3. Python中小整数对象池和大整数对象池

    1.小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提前 ...

  4. 小大整数对象池及intern机制

    1.    小整数对象池 Python   对⼩整数的定义是[-5,   256] 2.    大整数对象池 每⼀个⼤整数,均创建⼀个新的对象. a = 100 b = 100 # print(a i ...

  5. python整数池_对Python中小整数对象池和大整数对象池的使用详解

    1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提 ...

  6. python小整数池与大整数池

    在python中定义变量会有:id,type,value.对于==比较的是value,对于is比较的是id. 因此,对于相同value的变量,它的type相同,但是它的id值可能不一样.对于相同id的 ...

  7. Python判断不可变对象(字符串,整数,浮点数,数组)相等的办法以及其底层实现原理

    Python判断不可变对象(字符串,整数,浮点数,数组)相等的办法以及其底层实现原理 Python中,判断不可变对象是否相等与Java十分不同. 结论 Python中判断两个字符串相等:既可以使用&q ...

  8. python怎么求整数_python求整数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 求解方法:1.整数求余2.重复进行,整数除2再求余,直到除数为03.拼接余数4. ...

  9. 《python源码剖析》第一部分 作者:陈儒 - python的内建对象 <一>

    首先需要明确的是,在Python的世界里,一切都是对象. 一.PyObject PyObject是Python对象机制的基石,一切对象都有相同的PyObject部分. PyObject的定义如下: / ...

最新文章

  1. 矩阵的三角分解(LU)法(高斯消去法的矩阵形式分析)
  2. MongoDB安装与副本集配置
  3. php5.5 反序列化利用工具_%00截断配合反序列化的奇妙利用
  4. 组装电脑教程(转载)
  5. python3的socket_python3的socket使用
  6. 【PAT乙】1069 微博转发抽奖 (20分) set
  7. android之专栏目录
  8. python整数作为条件_Python基本概念介绍
  9. 一个简单的获取时间的程序
  10. mybatis 链接DB2查询报错,必需的字符转换器不可用。 ERRORCODE=-4220, SQLSTATE=null
  11. Excel中文拼音首字母缩写函数
  12. DOSBOX常用快捷键DEBUG指令
  13. java spring登录验证_详解使用Spring Security进行自动登录验证
  14. NAND Flash(spi nand flash和nand flash)和emmc以及ufs通过uboot烧写固件的一些差异
  15. 「游戏」岩浆逃脱2.1
  16. 关于结构体,枚举,联合的一些知识
  17. 64位计算机最大寻址,为什么说32位操作系统的寻址空间是4G
  18. 今日的金山,而非往日的金山
  19. RFID在固定资产盘点系统中的应用
  20. 我用维权失败经历告诉你,在淘宝上买到假货只能忍气吞声

热门文章

  1. 解决vue+axios post参数后端无法接收的问题
  2. Apache配置详解(一)
  3. Outlook 2013 电子邮件账户设置备份与恢复
  4. 威胁情报的几个关键概念
  5. OAuth认证原理及HTTP下的密码安全传输
  6. Cracking the Coding Interview(Stacks and Queues)
  7. Linux系统上Crontab定时执行教程
  8. 如约而至,Java 10 正式发布:包含 109 项新特性
  9. 容器编排技术 -- Pod 安全策略
  10. Spring Security 示例教程