zoukankan      html  css  js  c++  java
  • (9)变量的缓存机制和小数据池

     

    同一文件(模块),变量存储的缓存机制 (仅对python3.x版本负责了解)

    id:就是数据在内存里的地址,如何查看变量的id?

    a = 5
    b = 5
    c = 6
    print(id(a),id(b),id(c))
    print(a is b)

    8791247774480  8791247774480    8791247774512
    True

    8791247774480就是内存地址,可以看到a和b的内存地址是一样的,判断两个变量的id是否一致,用is.返回True或者False

    -->Number 部分

    1.对于整型而言,-5~正无穷范围内的相同值 id一致

    2.对于浮点数而言,非负数范围内的相同值 id一致

    3.布尔值而言,值相同情况下,id一致

    4.复数的id标识都不相同(在 实数+虚数 这样的结构中

    -->容器类型部分

    5.字符串而言,字符串值相同情况下,id一致

    6.列表,元组,字典,集合无论什么情况 id标识都不同(但空元组的id标识一样)

    不同文件(模块),部分数据驻留小数据池 (仅对python3.x版本负责了解)

    小数据池只针对: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)

    #可以指定任意字符串加入到小数据池中,无论声明多少个变量,只要此值相同,都指向同一个地址空间

    *无论是缓存机制还是小数据池的驻留机制,都是为了节省内存空间,提升代码效率

     

     

  • 相关阅读:
    spring IOC --- 控制反转(依赖注入)----简单的实例
    Spring MVC 返回视图时添加的模型数据------POJO
    Controller接口控制器3
    Controller接口控制器2
    Controller接口控制器
    Spring-MVC:应用上下文webApplicationContext
    DispatcherServlet 前置控制器
    WEB安全 asp+access注入
    WEB安全 Sqlmap 中绕过空格拦截的12个脚本
    Python 爬虫练习(三) 利用百度进行子域名收集
  • 原文地址:https://www.cnblogs.com/lyj910313/p/10797806.html
Copyright © 2011-2022 走看看