Python中小整数对象池和大整数对象池
1.小整数对象池
整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。
Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置,
所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。
In [1]: a=-5In [2]: b=-5In [3]: a is b
Out[3]: TrueIn [4]: a=256In [5]: b=256In [6]: a is b
Out[6]: TrueIn [7]: a=1000In [8]: b=1000In [9]: a is b
Out[9]: False
intern机制处理空格一个单词的复用机会大,所以创建一次,有空格创建多次,但是字符串长度大于20,就不是创建一次了。
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
In [13]: a="abc"In [14]: b="abc"In [15]: a is b
Out[15]: TrueIn [16]: a="helloworld"In [17]: b="helloworld"In [18]: a is b
Out[18]: TrueIn [19]: a="hello world"In [20]: b="hello world"In [21]: a is b
Out[21]: False
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
In [22]: a=1000In [23]: b=1000In [24]: a is b
Out[24]: FalseIn [25]: a=-1888In [26]: b=-1888In [27]: a is b
Out[27]: FalseIn [28]:
c1 = 1000
d1 = 1000
print(c1 is d1) # Trueclass C1(object):a = 100b = 100c = 1000d = 1000class C2(object):a = 100b = 1000print(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中小整数对象池和大整数对象池相关推荐
- python整数池_对Python中小整数对象池和大整数对象池的使用详解
1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提 ...
- c语言实验大整数,C语言编写大整数.doc
C语言编写大整数 本人写的大整数是256进制的,每一个字节里面的每一位都是有用的,因此比较节省空间.前面我用宏定义定义了大整数最大为128字节,也就是1024位,当然你可以改变SIZE的大小来改变大整 ...
- python整数池_【Python】Python中神奇的小整数对象池和大整数对象池
小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立 ...
- python小整数池与大整数池
在python中定义变量会有:id,type,value.对于==比较的是value,对于is比较的是id. 因此,对于相同value的变量,它的type相同,但是它的id值可能不一样.对于相同id的 ...
- Python面试题:字节到大整数的打包与解包
需求:处理一个拥有128位长的16个元素的字节字符串 将bytes解析为整数,使用 int.from_bytes() 方法,并像下面这样指定字节顺序: # 为了将bytes解析为整数,使用 int.f ...
- python长整数相乘_python写的大整数相乘的方法
输入 72106547548473106236 982161082972751393 两个大整数 输出结果 70820244829634538040848656466105986748 解题思路 首先 ...
- 整数判重、大整数Hash
大整数Hash 总是听高届的大佬说,一个字符串Hash,能搞出大部分的字符串题,Hash真的有那么神吗? 答:是的 近来,参加很多NOIP模拟赛,其中一场设计判断大整数是否存在偷懒了一下,开了一个ma ...
- matlab将数扩大为整数,MATLAB如何完成大整数运算问题?
Forcal+HugeCalc可以计算下面的数(只有指数部分不能是大整数): (1000!)^1000%(2000!) 代码: !using["HugeCalc"]; mvar: ...
- c语言任意两个整数相减_大整数加减运算的C语言实现
大整数加减运算的 C 语言实现 一 . 问题提出培训老师给出一个题目:用 C 语言实现一 个大整数计算器.初步要求支持大整数的加.减运算,例如 8888888888888+1112=888888889 ...
最新文章
- 计算机控制系统如何设计,计算机控制系统设计
- 机器学习第9天:K-邻近算法模型(KNN)
- 计算机网络:子网划分、子网掩码、CIDR 、路由聚合相关计算详解
- IMP-00041: 警告: 创建的对象带有编译警告解决办法
- 【Unity新闻】如何使用Unity进行机器人模拟? | AR/VR全球需求率激增1400%
- flask v0.1 路由
- Windows XP Mode安装配置
- mysql -e 导出_mysql 导出数据导入数据
- python xml转字典_python xml转成dict
- java空指针找不到,跪空指针异常,所有的传入参数都判断了非空,实在找不到哪里没有赋值了...
- 【破损识别】基于matlab GUI机器视觉+SVM玉米种子破损识别(带面板)【含Matlab源码 1651期】
- 【教程】Edraw Max(亿图图示)基本操作图文详解
- VS2005 SP1补丁下载与安装
- 2017年信息学奥赛NOIP普及组试题
- dell无法启动计算机,戴尔电脑装系统蓝屏无法启动怎么办
- Ionic4 Ionic-refresher 下拉更新
- Optional orElseThrow 错误: 未报告的异常错误X; 必须对其进行捕获或声明以便抛出...
- 软件测试缺陷表怎样描述,作为软件测试人员,如何描述缺陷(Defect)?
- “李焕英效应”将长期主宰中国影视股投资逻辑
- 一些俗语,不思八九,常想一二