python整数池_对Python中小整数对象池和大整数对象池的使用详解
1. 小整数对象池
整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。
Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置,
所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。
In [1]: a=-5
In [2]: b=-5
In [3]: a is b
Out[3]: True
In [4]: a=256
In [5]: b=256
In [6]: a is b
Out[6]: True
In [7]: a=1000
In [8]: b=1000
In [9]: a is b
Out[9]: False
intern机制处理空格一个单词的复用机会大,所以创建一次,有空格创建多次,但是字符串长度大于20,就不是创建一次了。
In [13]: a="abc"
In [14]: b="abc"
In [15]: a is b
Out[15]: True
In [16]: a="helloworld"
In [17]: b="helloworld"
In [18]: a is b
Out[18]: True
In [19]: a="hello world"
In [20]: b="hello world"
In [21]: a is b
Out[21]: False
s1 = "abcd"
s2 = "abcd"
print(s1 is s2)
s1 = "a" * 20
s2 = "a" * 20
print(s1 is s2)
s1 = "a" * 21
s2 = "a" * 21
print(s1 is s2)
s1 = "ab" * 10
s2 = "ab" * 10
print(s1 is s2)
s1 = "ab" * 11
s2 = "ab" * 11
print(s1 is s2)
# True
# True
# False
# True
# False
2.大整数对象池。说明:终端是每次执行一次,所以每次的大整数都重新创建,而在pycharm中,每次运行是所有代码都加载都内存中,属于一个整体,所以
这个时候会有一个大整数对象池,即处于一个代码块的大整数是同一个对象。c1 和d1 处于一个代码块,而c1.b和c2.b分别有自己的代码块,所以不相等。
C1.b is C2.b
In [22]: a=1000
In [23]: b=1000
In [24]: a is b
Out[24]: False
In [25]: a=-1888
In [26]: b=-1888
In [27]: a is b
Out[27]: False
In [28]:
c1 = 1000
d1 = 1000
print(c1 is d1) # True
class C1(object):
a = 100
b = 100
c = 1000
d = 1000
class C2(object):
a = 100
b = 1000
print(C1.a is C1.b) # True
print(C1.a is C2.a) # True
print(C1.c is C1.d) # True
print(C1.b is C2.b) # False
以上这篇对Python中小整数对象池和大整数对象池的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
时间: 2019-07-07
python整数池_对Python中小整数对象池和大整数对象池的使用详解相关推荐
- java 大整数平方根_手算平方根和基于 Java BigInteger 的大整数平方根的实现
为了实现任意大数的运算,long用BigInteger替换带哦. 好了废话少数,先说数学原理,也就是手算平方根计算机代码实现!那么什么叫手算平方根了??? 手开方图解 据说前苏联的普通工人都会的(毛熊 ...
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- [Python从零到壹] 四十五.图像增强及运算篇之图像灰度非线性变换详解
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- python整数池_【Python】Python中神奇的小整数对象池和大整数对象池
小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立 ...
- python整数运算_深入 Python (6) 整数对象的数学运算
整数的基本运算 上一节讲到,在 PyLong_Type 中定义了整数类型的各种属性,比如整数类型的名称 "int".整数对象最常用的是一些数学运算,整数对象当然也是支持这些方法的, ...
- python基础第五课--从字符串中打包和解包大整数(小白piao分享)
#4.从字符串打包和解包大整数 #将一个字符串解包成一个大整数,将一个大整数打包成一个字符串 #4.1 解决方案: #假设程序需要处理一个有16个元素的字节串,其中保存着一个128位的大整数 data ...
- python对象引用计数器_在Python中借助计数器对象对项目进行计数
python对象引用计数器 前提 (The Premise) When we deal with data containers, such as tuples and lists, in Pytho ...
- python程序设计与基础教程第六章上机实验_《Python程序设计与算法基础教程(第二版)》江红 余青松 课后代码题详解...
(还在更新中-) 这本书对Python的知识点的描述很详细,而且排版看的很舒服 几个例题: 假装自己从零开始学,将一些有代表性.有意思的例题抽取出来 部分复习题: 遇到有意思的复习题,我会拿出来,并且 ...
最新文章
- 一款直击痛点的优秀http框架,让我超高效率完成了和第三方接口的对接
- 100年前的北京Vlog火了!大神利用AI修复古董纪录片,还原1920年的京城生活
- 北京python培训班价格-北京Python启蒙班
- WEBAPP开发技巧
- 查看node状态_第六章 无限可能,神器降临——Node-RED
- 系统数据据结库设计理论mysql_基于JavaEE的报刊征订管理系统_JSP网站设计_MySQL数据库设计...
- 微信小程序 - 更改radio和checkbox选中样式
- python爬虫怎么下载图片到手机_Python爬虫获取图片并下载保存至本地
- C语言开发笔记(一)自动转换和强制转换
- 美国世态什么样,看这条“K”线就够了
- java定义一个方法,返回一个整数数组的和
- gpedit msc组策略面板 win10在哪里_Win10家庭版找不到组策略gpedit.msc的解决方法
- 如何找到自身产品优势?
- 图书信息管理系统(c语言)
- 【SpringBoot整合NoSql】-----ElasticSearch的安装与操作篇
- 国际象棋渲染测试软件,测试了五款软件八款游戏:AMD三代锐龙YES!但游戏英特尔略胜一筹...
- 游戏手柄(JoyStick)的延时处理
- 启用Win11原生支持的DoH(DNS over HTTPS)和配置自定义的DoH服务
- IDEA 出现问题:PSI and index do not match 解决方案
- 华为p9 html尺寸,华为P9 Plus的屏幕尺寸是多少
热门文章
- 采集练习(五) php 获得chrome扩展 微度新标签页 下的云壁纸(主要是美女壁纸)
- [zz]linux修改密码出现Authentication token manipulation error的解决办法
- [新闻]炫目的全景与视频监控结合应用
- java中能对属性封装吗_JAVA中的封装
- spring框架做全局异常捕获_springboot springmvc抛出全局异常的解决方法
- python路径在哪里设置_找Python安装目录,设置环境路径以及在命令行运行python脚本实例...
- 16位整型数据matlab,matlab的整型数据
- 资源放送丨《高并发Oracle OLTP系统的故障案例分享》PPT视频
- Oracle 19.6 的有趣BUG:可能引发 CLOB 存储数据的丢失
- ORA-12547: TNS:lost contact导致数据库无法启动