python 变量存储的缓存机制
1.在同一文件(模块)里,变量存储的缓存机制(仅对python3.6版本负责)
#----Number 部分
1.对于整型而言,-5~正无穷范围内的相同值,id一致
2.对于浮点数而言,非负数范围内的相同值,id一致
3.布尔值而言,值相同情况下, id一致
4.复数 在实数+虚数 这样的结构中永不相同 (只有虚数情况例外)
#----容器类型部分
5.字符串 和 空元组 相同的情况下, 地址相同
6.列表,元组,字典,集合无论什么情况,id都不相同(空元组例外)
2.不同文件(模块)里,部分数据驻留小数据池中(仅对python3.6版本负责)
python提前在内存中创建了 - 5~ 256 范围的整数,驻留在内存的一块区域,如果是不同文件(模块)的两个变量,并在此范围具有相同的值,那么id一致
小数据池只针对: int,str,bool,以空元组(,),None关键字 有效
对于字符串来说:
1.字符串的长度为0 或 1,默认驻留小数据池
2.字符串的长度>1,且只含有大小写字母,数字,下划线时,默认驻留小数据池
3.用乘法得到的字符串,分两种情况
(1)乘数为1时:无论什么字符串*1,都默认驻留小数据池
(2)乘数大于1时:乘数大于1,仅包含数字,字母,下划线时会被缓存,但字符串长 度大于20则不会缓存
#3.指定驻留intern
1 # 从 sys模块 引入 intern 函数 让a,b两个变量指向同一个值 2 from sys import intern 3 a = intern('大帅锅&*^^1234'*10) 4 b = intern('大帅锅&*^^1234'*10) 5 6 print(a is b) # True
可以指定任意字符串加入到小数据池中,无论声明多少个变量,只要此值相同,都指向同一个地址空间
目的:无论是变量缓存机制还是小数据池的驻留机制,都是为了节省内存空间,提升代码效率

浙公网安备 33010602011771号