小数据池和深浅拷贝
小数据池
-
什么是小数据池?
- 小数据池就是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)
-
深浅拷贝
-
深浅拷贝的规律:
赋值: 两个变量使用的是同一个空间
浅拷贝:修改不可变数据类型,不变动,修改可变数据类型,变动
深拷贝:修改就不变动