小数据池和深浅拷贝

小数据池

  • 什么是小数据池?

    • 小数据池就是Python中一种调高效率的方式,固定数据类型使用同一个内存地址
    • 支持 : str,int,bool
  • 小数据池是干嘛的?

    • id()查看空间的内存地址 获取开辟空间的一种地址
    • 小数据池数字支持范围 : -5 ~ 256
    • is : 判断两个内存地址是否相同
    • == : 判断等号两边的值是否想铜
  • 字符串

    • 字符在做乘法的时候总长度不能超过20,进行驻留
    • 自己定义的字符串 ,长度不限制,但字符串必须是字母数字下划线的组成,进行驻留
    • 特殊字符(中文除外)定义一个的时候,进行驻留
    • 字符串*1,其实就是赋值
  • 代码块

    • 一个文件,一个模块,一个函数,一个类,终端中的每一行都是一个代码块,在Python中以字典的方式储存
    • 数字,全部驻留
    • 字符串
      • 乘法时总长度不超过20
      • 自定义的都驻留
      • 乘数为1的时候就是赋值
      • Python3.7乘法的时候总长度不能超过4096
  • 强制驻留

  • from sys import intern

    ​ a = intern(@@@@*20)

    ​ b = intern(@@@@*20)

    print(a is b) #自己进行驻留

集合

  • 什么是集合?

    • 集合就是一个没有值的字典,遵循: 唯一,无序,元素要求可哈希(不可变)

    • 集合是可变的,无序的

    • 作用主要就是去重

    • 增加

      • s.update("3456") #迭代添加
      • s.add()
    • 删除

      • s.pop() : 随机删除 #据自己观察发现有点规律,但是不好说
      • s.remove() : 通过元素删除
      • s.clear() : 清空
      • del s : 删除整个集合
    • 修改

      • 删了再加不就是改了
    • 其他操作

      # print(s1 - s2)  #差集
      # print(s1 | s2)  #并集   (合集)
      # print(s1 & s2)  #交集
      # print(s1 ^ s2)  #对称差集  -- 反交集
      # print(s1 > s2)  # 超集   -- 父集
      # print(s1 < s2)  # 子集
      # 冻结集合(可变 转换成 不可变)  -- 更不常用
      # f_s = frozenset({1,2,3,4,5})
      # # dic = {f_s:"1"}
      # # print(dic)
      

深浅拷贝

  • 深浅拷贝的规律:

    赋值: 两个变量使用的是同一个空间
    浅拷贝:修改不可变数据类型,不变动,修改可变数据类型,变动
    深拷贝:修改就不变动

原文地址:https://www.cnblogs.com/W-Y-C/p/11005537.html