• python机制与小数据池


    python机制

    1. id is ==
      • 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存中,那么这个空间是有一个唯一标识的,就好比是身份证号,标识这个空间的叫做内存地址,也就是这个数据(对象)的id,那么你可以利用id()去获取这个数据的内存地址:
        name = '太白'
        print(id(name)) # 1585831283968

      • 那么 is 是什么? == 又是什么?
        == 是比较的两边的数值是否相等,而 is 是比较的两边的内存地址是否相等。 如果内存地址相等,那么这两边其实是指向同一个内存地址。

      • 可以说如果内存地址相同,那么值肯定相同,但是如果值相同,内存地址不一定相同

    2. 代码块
      • 代码块:我们所有的代码都需要依赖代码块执行
      • 一个文件就是一个代码块(函数除外)
      • 交互式命令下一行就是一个代码块
    3. 两个机制(字符串驻留机制):同一个代码块下,有一个机制.不同的代码块下,遵循另一个机制。
    4. 同一代码块下缓存机制
      • 前提条件:同一代码块内.
      • 机制内容:Python在执行同一个代码块的初始化对象的命令时,会检查是否其值是否已经存在,如果存在,会将其重用。换句话说:执行同一个代码块时,遇到初始化对象的命令时,他会将初始化的这个变量与值存储在一个字典中,在遇到新的变量时,会先在字典中查询记录,如果有同样的记录那么它会重复使用这个字典中的之前的这个值。所以在你给出的例子中,文件执行时(同一个代码块)会把i1、i2两个变量指向同一个对象,满足缓存机制则他们在内存中只存在一个,即:id相同 。
      • 适用对象:int str bool
      • 具体细则:所有的数字,几乎所有的字符串
      • 优点:提升性能,节省内存。
    5. 不同代码块下的缓存机制:小数据池
      • 前提条件:不同代码块内。
      • 机制内容:Python自动将-5~256的整数进行了缓存,当你将这些整数赋值给变量时,并不会重新创建对象,而是使用已经创建好的缓存对象。
        python会将一定规则的字符串在字符串驻留池中,创建一份,当你将这些字符串赋值给变量时,并不会重新创建对象, 而是使用在字符串驻留池中创建好的对象。
          其实,无论是缓存还是字符串驻留池,都是python做的一个优化,就是将~5-256的整数,和一定规则的字符串,放在一个‘池’(容器,或者字典)中,无论程序中那些变量指向这些范围内的整数或者字符串,那么他直接在这个‘池’中引用,言外之意,就是内存中之创建一个。
      • 适用对象:int str bool
      • 具体细则:
        • int:那么大家都知道对于整数来说,小数据池的范围是-5~256 ,如果多个变量都是指向同一个(在这个范围内的)数字,他们在内存中指向的都是一个内存地址
        • str:字符串要从下面这几个大方向讨论(了解即可!):
          1. 字符串的长度为0或者1,默认都采用了驻留机制(小数据池)。
          2. 字符串的长度>1,且只含有大小写字母,数字,下划线时,才会默认驻留。
          3. 用乘法得到的字符串,分两种情况。
            • 乘数为1时
              • 仅含大小写字母,数字,下划线,默认驻留
              • 含其他字符,长度<=1,默认驻留
              • 含其他字符,长度>1,默认驻留。
            • 乘数>=2时:
              • 仅含大小写字母,数字,下划线,总长度<=20,默认驻留
          4. 指定驻留。
      • 优点:提升性能,节省内存。
  • 相关阅读:
    jq绑定事件
    NReco.PdfGenerator HtmlToPdfConverter 使用示例(未完成)
    msbuild 简单命令
    python 文件操作
    OpenXml demo
    js 常见代码
    C# 静态变量、静态函数、实体变量、实体函数在一个类中的执行顺序
    线程相关技术
    css 光标
    ECMAScript面向对象(二)——之创建对象方法总结
  • 原文地址:https://www.cnblogs.com/940531gbh/p/11262667.html
Copyright © 2020-2023  润新知