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

 

可以指定任意字符串加入到小数据池中,无论声明多少个变量,只要此值相同,都指向同一个地址空间
目的:无论是变量缓存机制还是小数据池的驻留机制,都是为了节省内存空间,提升代码效率

posted @ 2019-07-02 00:03  Sam_202099  阅读(444)  评论(0)    收藏  举报