• python3 可变对象与不可变对象


    1.什么是可变对象与不可变对象?

    首先,可变与不可变是指的这个对象的id是否可变,而python的基本数据类型都是对象,因此可变对象与不可变对象指的是:
    当需要改变对象内部值的时候,对象的id是否发生变化:

    • 不发生变化:不可变对象
    • 发生变化:可变对象

    2.基本数据类型中哪些是可变对象和不可变对象?

    可变对象不可变对象
    列表list数值型(int,float)
    字典dict字符串str
    集合set元组tuple

    3.数值类型的解析

    较小的整数会很频繁的被使用,所以python将这些对象放置到了一个池子中,每次需要这些对象的时候就到池子中获取这个值,避免多次的重复创建对象引起的许多不必要的开销。这个池子内的数字范围是[-5, 257), 所以都是从池子里面取值,自然id不变。

    int类型

    较小的整数会很频繁的被使用,所以python将这些对象放置到了一个池子中,每次需要这些对象的时候就到池子中获取这个值,避免多次的重复创建对象引起的许多不必要的开销。这个池子内的数字范围是[-5, 257), 所以都是从池子里面取值,自然id不变。

    float类型

    对于float类型的使用自然没有int那么频繁,并且float类型也不好定义哪些常用,也就没有池子给到这个类型,所以每次重新创建即可。

    tuple类型

    对于tuple类型,与float类型的思维相似,所以也是每次重新创建。

    string类型

    单词类型的str由于被重复使用的概率比较大,所以在python中为单词类型的str做了一个缓存,也就是说如果是单词类型的str, 会被存储到一个字典(dict)中,字典的内容是字符串为key, 地址为value。当有一个字符串需要创建,就先去访问这个字典,如果存在则返回字典中字符串的地址,如果不存在,则返回新创建的地址,并将这个字符串添加进入字典。这是字符串的intern机制。

  • 相关阅读:
    Eureka 服务注册与发现
    Android JNI 引用分析
    springboot 调用第三方接口的方式(一)使用RestTemplate方法
    2022 CMU15-445 Project 1 Buffer Pool
    Wi-Fi还可以做什么?柯南解释IOT应用
    Java(集合框架01)
    光鉴科技:以3D视觉变革重新定义驾乘体验
    修改oem.img镜像文件
    Java之File类的详细解析及小练习
    预训练模型相对位置编码和绝对位置编码的通俗理解
  • 原文地址:https://blog.csdn.net/qq_45801179/article/details/127853306