zoukankan      html  css  js  c++  java
  • 代码块,小数据池

    id is == 代码块

    id

    变量存储在内存中是有一个唯一的内存地址的,定义一个变量就是在内存空间中开辟一个空间

    • 如何获取对象的内存ID?
    num = 123
    msg = "abc"
    print(id(num))
    print(id(msg))
    
    #字符串的内存ID是随机的,如果ID相同,那么就是同一个
    

    ID相同,值一定相同

    值相同,ID不一定相同

    ==

    == : 比较的是两边的值是否相等

    s1 = [1,2,3]
    s2 = [1,2,3]
    print(s1 == s2)
    

    is

    is : 判断的是内存地址是否相同

    s1 = [1,2,3]
    s2 = [1,2,3]
    print(s1 is s2)
    #s1 s2在内存中创建了2个
    
    s1 = "abc"
    s2 = "abc"
    print(s1 is s2)
    #s1 s2在内存中是同一个
    
    
    

    代码块

    python程序时由代码块构造的,块是一个python程序的文本,作为一个单元执行的。

    • 代码块:一个文件,一个函数,一个模块,一个类,终端中一行就是一个代码块
    • 交互方式输入的每行命令都是一个代码块

    缓存机制

    代码块

    • 前提条件:在同一个代码块内,版本3.6及以下
    • 机制内容:python在执行同一个代码块的初始化对象的命令时,会检查是否其值是否已经存在,如果存在 ,会将其重用。换句话说:执行同一个代码块时,遇到初始化对象的命令时,他会将初始化的这个变量与值存储在一个字典中,在遇到新的变量时,会现在字典中查询记录,如果有同样的记录,那么他会重复使用这个字典中的之前的这个值。满足缓存机制则在内存中只存在一个。
    • 好处:节省内存,提高效率
    • 使用对象:int(float),str,bool
    • 对象的具体细则:
      • int(float):>= -5 的数字在同一代码块下都是复用的
      • bool:True和False在字典中会以1,0的方式存在,并且复用
      • str:几乎所有的字符串都符合缓存机制:
        • 非乘法得到的字符串都满足缓存机制(共用一个内存空间)
          • 乘数>=2时,满足仅含大小写字母,数字,下划线,总长度<=20内存地址相同
          • 乘数为1 时,任何字符串都满足代码块的缓存机制
          • 中文,特舒符号 乘法的时候只能乘以1或 0

    小数据池

    小数据池,不同代码块的缓存机制,也称为小整数缓存机制,或者称为驻留机制等等。

    小数据池的验证方法:必须脱离代码块才可以

    • 前提条件:在不同代码块之间,版本3.6及以下
    • 数字
      • 范围:-5~256内满足缓存机制
    • 字符串
      • 字符串的长度为0 或 1 ,默认符合驻留机制(小数据池)
      • 字符串长度>1,且只含有大小写字母,数字,下划线时才会默认驻留
      • 用乘法得到字符串
        • 乘数为1 :
          • 仅含大小写字母,数字,下划线,默认驻留
          • 含有其他字符,长度<=1,默认驻留
          • 含有其他字符,长度>1,默认驻留
        • 乘数 >=2时:
          • 仅含大小写字母,数字,下划线时,总长度<=20,默认驻留
    • 布尔值
      • True和False在字典中会以1,0的方式存在,并且复用

    小结

    如果在统一代码块下,采用统一代码块的缓存机制

    不同代码块则采用小数据流的驻留机制

  • 相关阅读:
    CSP201412-2:Z字形扫描
    CSP201409-2:画图
    CSP201403-2:窗口
    CSP201312-2:ISBN号码
    CSP201709-1:打酱油
    CSP201703-1:分蛋糕
    CSP201612-1:中间数
    LOAM笔记及A-LOAM源码阅读
    特征值、特征向量与PCA算法
    欧几里得与区域生长算法
  • 原文地址:https://www.cnblogs.com/os-linux/p/11197801.html
Copyright © 2011-2022 走看看