Python的小整数对象池
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的小整数对象池相关推荐
- python求5_python(五)——运算符,小整数对象池
1.成员运算符,判断某个东西是否在某个东西里包含:in,not in name = "abcd" if "ac" inname:print("ok&q ...
- python整数池_【Python】Python中神奇的小整数对象池和大整数对象池
小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立 ...
- Python中小整数对象池和大整数对象池
1.小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提前 ...
- 小大整数对象池及intern机制
1. 小整数对象池 Python 对⼩整数的定义是[-5, 256] 2. 大整数对象池 每⼀个⼤整数,均创建⼀个新的对象. a = 100 b = 100 # print(a i ...
- python整数池_对Python中小整数对象池和大整数对象池的使用详解
1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提 ...
- python小整数池与大整数池
在python中定义变量会有:id,type,value.对于==比较的是value,对于is比较的是id. 因此,对于相同value的变量,它的type相同,但是它的id值可能不一样.对于相同id的 ...
- Python判断不可变对象(字符串,整数,浮点数,数组)相等的办法以及其底层实现原理
Python判断不可变对象(字符串,整数,浮点数,数组)相等的办法以及其底层实现原理 Python中,判断不可变对象是否相等与Java十分不同. 结论 Python中判断两个字符串相等:既可以使用&q ...
- python怎么求整数_python求整数
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 求解方法:1.整数求余2.重复进行,整数除2再求余,直到除数为03.拼接余数4. ...
- 《python源码剖析》第一部分 作者:陈儒 - python的内建对象 <一>
首先需要明确的是,在Python的世界里,一切都是对象. 一.PyObject PyObject是Python对象机制的基石,一切对象都有相同的PyObject部分. PyObject的定义如下: / ...
最新文章
- D2 AJAX 封装策略
- Spring Cloud Gateway 源码解析(2) —— 路由
- 串口发送和接受字符串,AD转换多通道读取
- hadoop的mapreduce知识点
- Python 爬虫的集中简单方式
- 【易实战】Spring Cloud微服务架构12要素应用 Twelve‑Factor App
- share 接口的使用
- vs201中debug和release两个版本的区别
- 原生JS中动态添加元素
- 英语语法之后缀决定词性
- CDN中加速域名和源站地址和回源HOST是什么,应该怎么填
- 车牌号正则表达式(含新能源车牌)
- python cnn 回归模型_【深度学习系列】CNN模型的可视化
- 四种常见的post请求中的参数形式
- 清华大学NLP实验室刘知远教授组与华为合作招聘博士后
- 不需要再手写 onSaveInstanceState 了,因为你的时间非常值钱
- Protected or Private?
- 网关和代理服务器的异同
- 识别三角形(c++基础)
- Python Gdal 栅格数据处理之hgt转tif数据
热门文章
- maven配置sqlServer的依赖
- Stream从Python切换到Go的原因
- AR-关于几种特殊的收款方式说明
- 理解SharePoint中的备用访问映射(Alternate Access Mapping)
- 刚copy试探发表了一篇文章文章,oschina感觉良好
- 面试精讲之面试考点及大厂真题 - 分布式专栏 05 公司使用什么RPC框架,聊聊你理解的RPC原理
- 配置nginx直接使用webpack生成的gz压缩文件
- Spring MVC Hibernate MySQL集成CRUD示例教程
- 企业如何实际使用 Docker
- java你画我猜源码_为什么看到Mybatis源码就感到烦躁?