一:变量存储的缓存机制

在同一文件(模块)里,变量存储的缓存机制 (仅对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 基础之变量存储缓存机制与数据驻留小数据池的更多相关文章

  1. 变量存储缓存机制 Number (int bool float complex)

    # ###变量存储的缓存机制(为了节省空间) #Number (int bool float complex) # (1) int -5~正无穷范围内 var1 = 18 var2 = 18 var1 ...

  2. python中变量的缓存机制

    同一文件中, 变量的缓存机制 (在此范围内的相同值内存地址一样) Number: int:                -5 ~ 正无穷 float:             非负数 bool:  ...

  3. day3 python数据类型转换及变量的缓存机制

    类型转换 1,强制类型转换 1.1 number的转换(int,float,bool,complex) num1 = 10 num2 = 10.6 num3 = True num4 = 3 + 4j ...

  4. python小白——进阶之路——day2天-———变量的缓存机制+自动类型转换

    # ###同一文件,变量的缓存机制 ''' -->Number 部分 1.对于整型而言,-5~正无穷范围内的相同值 id一致 2.对于浮点数而言,非负数范围内的相同值 id一致 3.布尔值而言, ...

  5. Python基础 之 变量、用户交互、if条件语句、while循环语句、编码、逻辑运算

    一.Python介绍 Python 崇尚优美.清晰.简单 Python是一门动态解释型的强制性定义的语言. 二.编译型和解释型的区别 编译型:一次性将所有与程序编译成二进制文件. 缺点:开发效率低,不 ...

  6. Python基础之变量与常量

    目录 1. 变量 1.1 变量的定义和组成 1.2 变量名的命名规则 1.3 变量名的两种风格 2. 常量 3. 变量内存管理 3.1 变量的存储 3.2 垃圾回收机制 3.2.1 引用计数 3.3 ...

  7. Python 基础之一变量和赋值

    变量:程序在运行的时候会用到很多临时存储数据,这个时候就用到了变量,临时数据的名字. Python中变量不需要声明,直接可以使用,变量的数据类型由赋值确定. >>> name=&qu ...

  8. python基础8 - 变量2

    1. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开 ...

  9. python基础3 - 变量的基本使用和命名

    4.变量的基本使用 4.1 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建 等号(=)用来给变量赋值 = 左边是变量名 = 右边是存储在变量中的值 变 ...

随机推荐

  1. 今天捡起来python

    时隔多少,我还是要学习,之前懒,结果有些就忘了,用笨方法学Python,码代码夹理解运行改正也就20多分钟,主要是加分习题,你一扩展就要思考的时间长了所以大概要留出1个小时来做他,好了该复习前面的了

  2. 语言模型(N-Gram)

    问题描述:由于公司业务产品中,需要用户自己填写公司名称,而这个公司名称存在大量的乱填现象,因此需要对其做一些归一化的问题.在这基础上,能延伸出一个预测用户填写的公司名是否有效的模型出来. 目标:问题提 ...

  3. Wisdom RESTClient 使用教程

    Wisdom RESTClient 一款自动化测试REST API的工具,它可以自动化测试RESTful API并生成精美的测试报告,同时基于测试过的历史API,可以生成精美的RESTful API文 ...

  4. 一个切换内外网IP地址的批处理BAT

    做了一个切换内外网的小脚本.没想到这个老的没剩几颗牙的DOS竟然功能如此强大.盛名之下名副其实啊!不亏是想当年叱咤风云的操作系统啊! 脚本内容1.建立两个TXT文件,分别按行存储内外网的IP,MASK ...

  5. QTCPSOCKET 客户端已连接 而服务器无响应

    最近在使用qt coding一个项目时,使用到了qtcpsocket模块来编写客户端与服务器.在windows平台下还能正常工作,但是在ubuntu平台下,客户端提示已连接时,服务器却没有响应.经过排 ...

  6. [转] Springboot的数据库操作

    转载自:https://www.cnblogs.com/juncaoit/p/7789034.html springBoot的数据库操作 一:操作数据库起步 1.Spring-Data-Jpa JPA ...

  7. v-echart 按需加载

    import 'v-charts/lib/style.css';import VeBar from 'v-charts/lib/bar' // 条形图import VeRadar from 'v-ch ...

  8. excel 用VBA将所有单元格内容全部转换为文本

    Sub 将所有列全部转换为文本() t=timer 'Cells(Rows.Count, 1).End(xlUp).Row 获取第一列最后一个非空单元格的行号 s = Cells(, Columns. ...

  9. Simple circos code

    According to the tutorials (http://circos.ca/documentation/tutorials/), to draw a graph using circos ...

  10. 二、Windows 下 ShellCode 编写初步

    第二章.Windows 下 ShellCode 编写初步 (一)shellcode 定义:最先的 Shell 指的是人机交互界面,ShellCode 是一组能完成我们想要的功能的机器代码,通常以十六进 ...