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. D2 AJAX 封装策略
  2. Spring Cloud Gateway 源码解析(2) —— 路由
  3. 串口发送和接受字符串,AD转换多通道读取
  4. hadoop的mapreduce知识点
  5. Python 爬虫的集中简单方式
  6. 【易实战】Spring Cloud微服务架构12要素应用 Twelve‑Factor App
  7. share 接口的使用
  8. vs201中debug和release两个版本的区别
  9. 原生JS中动态添加元素
  10. 英语语法之后缀决定词性
  11. CDN中加速域名和源站地址和回源HOST是什么,应该怎么填
  12. 车牌号正则表达式(含新能源车牌)
  13. python cnn 回归模型_【深度学习系列】CNN模型的可视化
  14. 四种常见的post请求中的参数形式
  15. 清华大学NLP实验室刘知远教授组与华为合作招聘博士后
  16. 不需要再手写 onSaveInstanceState 了,因为你的时间非常值钱
  17. Protected or Private?
  18. 网关和代理服务器的异同
  19. 识别三角形(c++基础)
  20. Python Gdal 栅格数据处理之hgt转tif数据

热门文章

  1. maven配置sqlServer的依赖
  2. Stream从Python切换到Go的原因
  3. AR-关于几种特殊的收款方式说明
  4. 理解SharePoint中的备用访问映射(Alternate Access Mapping)
  5. 刚copy试探发表了一篇文章文章,oschina感觉良好
  6. 面试精讲之面试考点及大厂真题 - 分布式专栏 05 公司使用什么RPC框架,聊聊你理解的RPC原理
  7. 配置nginx直接使用webpack生成的gz压缩文件
  8. Spring MVC Hibernate MySQL集成CRUD示例教程
  9. 企业如何实际使用 Docker
  10. java你画我猜源码_为什么看到Mybatis源码就感到烦躁?