python 基础之变量存储缓存机制与数据驻留小数据池
一:变量存储的缓存机制
在同一文件(模块)里,变量存储的缓存机制 (仅对python3.x版本负责),那么
--对于Number (int bool float complex)
1.对于整型而言,-5~正无穷范围内的相同值 id一致
2.对于浮点数而言,非负数范围内的相同值 id一致
3.布尔值而言,值相同情况下,id一致
4.复数的id标识都不相同(在 实数+虚数 这样的结构中)
(1) int -5 ~ 正无穷范围内
var1 = 18
var2 = 18
print(id(var1),id(var2)) #相同
var1 = -99
var2 = -99
print(id(var1),id(var2)) #不相同
var1 = -6
var2 = -6
print(id(var1),id(var2)) #不相同
(2)float 非负数
var1 = 3.15
var2 = 3.15
print(id(var1),id(var2)) #相同
var1 = -6.88
var2 = -6.88
print(id(var1),id(var2)) #不相同
(3) bool 在布尔值相同的情况下 值得地址相同
var1 = False
var2 = False
print(id(var1),id(var2)) #相同
(4) 在实数 + 虚数的情况下 永远不一样
var1 = 5+3j
var2 = 5+3j
print(id(var1),id(var2)) #不相同
'''只有虚数的情况下,例外'''
var1 = 8j
var2 = 8j
print(id(var1),id(var2)) #相同
--对于容器类型部分
5.字符串而言,字符串值相同情况下,id一致
6.列表,元组,字典,集合无论什么情况,id标识都不同(但空元组的id标识一样)
(1)str
var1 = "你"
var2 = "你"
print(id(var1),id(var2)) #相同
(2)空元组
var1 = ()
var2 = ()
print(id(var1),id(var2)) #相同
(3)剩下所有的容器类型数据地址都不一样
var1 = (1,2,3)
var2 = (1,2,3)
print(id(var1),id(var2)) #不相同
var1 = []
var2 = []
print(id(var1),id(var2)) #不相同
var1 = {'a':1}
var2 = {'a':1}
print(id(var1),id(var2)) #不相同
二:数据驻留小数据池
不同文件(模块)里,部分数据驻留小数据池中 (仅对python3.x版本负责)
python提前在内存中创建了-5 ~ 256 范围的整数,驻留在了内存的一块区域.
如果是不同文件(模块)的两个变量,并在此范围具有了相同的值,
那么id一致.
小数据池只针对:int ,string,bool,以及空元祖(),None关键字 有效
对于字符串来说:
(1)字符串的长度为0或者1,默认驻留小数据池
(2)字符串的长度>1,且只含有大小写字母,数字,下划线时,默认驻留小数据池
(3)用乘法得到的字符串,分两种情况。
1)乘数为1时:
无论什么字符串 * 1 , 都默认驻留小数据池
2)乘数大于1时:
乘数大于1,仅包含数字,字母,下划线时会被缓存,但字符串长度不能大于20
指定驻留
from sys import intern
a = intern('盲僧&*^^1234'*10)
b = intern('盲僧&*^^1234'*10)
print(a is b)
#可以指定任意字符串加入到小数据池中,无论声明多少个变量,只要此值相同,都指向同一个地址空间
*无论是缓存机制还是小数据池的驻留机制,都是为了节省内存空间,提升代码效率
python 基础之变量存储缓存机制与数据驻留小数据池的更多相关文章
- 变量存储缓存机制 Number (int bool float complex)
# ###变量存储的缓存机制(为了节省空间) #Number (int bool float complex) # (1) int -5~正无穷范围内 var1 = 18 var2 = 18 var1 ...
- python中变量的缓存机制
同一文件中, 变量的缓存机制 (在此范围内的相同值内存地址一样) Number: int: -5 ~ 正无穷 float: 非负数 bool: ...
- day3 python数据类型转换及变量的缓存机制
类型转换 1,强制类型转换 1.1 number的转换(int,float,bool,complex) num1 = 10 num2 = 10.6 num3 = True num4 = 3 + 4j ...
- python小白——进阶之路——day2天-———变量的缓存机制+自动类型转换
# ###同一文件,变量的缓存机制 ''' -->Number 部分 1.对于整型而言,-5~正无穷范围内的相同值 id一致 2.对于浮点数而言,非负数范围内的相同值 id一致 3.布尔值而言, ...
- Python基础 之 变量、用户交互、if条件语句、while循环语句、编码、逻辑运算
一.Python介绍 Python 崇尚优美.清晰.简单 Python是一门动态解释型的强制性定义的语言. 二.编译型和解释型的区别 编译型:一次性将所有与程序编译成二进制文件. 缺点:开发效率低,不 ...
- Python基础之变量与常量
目录 1. 变量 1.1 变量的定义和组成 1.2 变量名的命名规则 1.3 变量名的两种风格 2. 常量 3. 变量内存管理 3.1 变量的存储 3.2 垃圾回收机制 3.2.1 引用计数 3.3 ...
- Python 基础之一变量和赋值
变量:程序在运行的时候会用到很多临时存储数据,这个时候就用到了变量,临时数据的名字. Python中变量不需要声明,直接可以使用,变量的数据类型由赋值确定. >>> name=&qu ...
- python基础8 - 变量2
1. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开 ...
- python基础3 - 变量的基本使用和命名
4.变量的基本使用 4.1 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建 等号(=)用来给变量赋值 = 左边是变量名 = 右边是存储在变量中的值 变 ...
随机推荐
- centos7 下安装mysql教程
最近要在centos服务器上配置环境,在部署mysql的时候,碰到各种各样的问题,网上博客文章也是有各种坑,目前发现一个比较好的博客: https://blog.csdn.net/xiaomojun/ ...
- cocos Studio使用问题
使用的时候最好是同一套资源饭在一个文件夹下,或者新建的文件和资源类,一个资源分一个产生的层文件
- python基础知识总结(二)
基础数据类型初始: int(数字):+ 加 - 减 * 乘 / 除 % 取余数 str(字符串):python中凡是用引号引起来的都是字符串 可以相加,用来表示字符串的拼接 可以相乘,只能 ...
- L345 大脑复生
Yale Researchers Build BrainEx Machine to Restore Brain Function After Death Researchers at Yale Uni ...
- IP通信基础课堂笔记----第一章(重点)
七层数据传输:应用层.表示层.会话层.传输层.网络层.数据链路层.物理层 1.物理层:设备----集线器.Hub 两台主机的最大跨度----2500m 在物理层工作----(1)所有设备都处于同一冲突 ...
- 2019-04-26-day041-数据库的索引
内容回顾 多表查询 联表查 内连接 左右两表中能连上的行才被保留 表1 inner join 表2 on 表1.字段1=表2.字段2 外连接 左外连接 表1中所有的项都会被保留,而表2中只有匹配上表1 ...
- Wpf binging (二) 集合绑定
除去简单控件的数据绑定,还有集合控件的数据绑定,一下示例 这发现 source 变成了 itemsSource Path 变成了 DisplayMemberPath itemsSource:代 ...
- 高分一号计算NDVI
1.准备工作 如果想要ENVI友好一点,请下载ENVI5.3,并且安装China satellites 补丁(参考博客:ENVI扩展工具:中国国产卫星支持工具) App Store for ENVI下 ...
- 网赚app
网赚app有很多目前来说做的比较好的赚的比较多的有四款推荐 宝石星球下载地址:http://www.baoshixingqiu.com/redPacket?key=548341 雪梨网APP下载地址 ...
- Altium Designer 10 执行DRC发现有 Length Constraint 解决办法
在PCB布局连线结束后,执行DRC,结果Length Constraint 报错,如图: 在Design Rules中找对应的规则约束,怎么也找不见. 其实是,在差分对进行等长蛇形绕线的步骤中,约束了 ...