小数据池的概念
小数据池
1.小数据池的定义
什么是小数据池? 小数据池就是Python中一种提高效率的方式,固定数据类型使用同一个内存地址 小数池 -- 支持: str,int,bool
小数据池是干嘛的? a = 1 b = 1 id 查看空间的内存地址 获取开辟空间的一种地址 print(id(a)) print(id(b))
2.小数据池的范围
2.1数字
小数据池数字支持范围: -5 ~ 256 *记住
a = 300 b = 300 print(id(a)) print(id(b))
代码块: 一个文件,一个模块,一个函数,一个类,终端中每一行都一个代码块 在python中是用字典的方式存储
a = 1000 b = 1000 print(id(a)) print(id(b))
is # 判断两个内存地址是否相同 # 必须记住 == # 判断等号两边的值是否相同 # 必须记住
2.2字符串
字符串: 1.字符串在做乘法的时候总长度不能超过20,进行驻留 # 记住 2.自己定义的字符串 长度不限制 字符串必须(字母,数字.下划线)组成,进行驻留 3.特殊字符(中文除外)定义1个时候,进行驻留 4.字符串*1 其实就是赋值
如果is判断相同 == 一定相同 如果==判断相同 is 不一定相同
a = 1000 b = 1000 print(a == b)
a = "alexdsb" * 2 b = "alexdsb" * 2 print(a is b)
a = "12345678912345678qwertyuioqwertyuioQWERTYUIOWERTYUIOQWERTYUIOasdfghjksdfghjkasdgadsfasdfgasdgasdgfsdaf" b = "12345678912345678qwertyuioqwertyuioQWERTYUIOWERTYUIOQWERTYUIOasdfghjksdfghjkasdgadsfasdfgasdgasdgfsdaf" print(a is b)
a = "你" b = "你" print(a is b) # pycharm中是True 因为执行了代码块,终端中是False
a = "@" b = "@" print(a is b)
a = "你好" b = a * 1 print(a is b)
先执行代码块,不符合代码块才会执行小数据池
3.代码块
3.1代码块的规则
数字:全部驻留
3.1.2字符串
1.字符做乘法的时候总长度不能超过20 2.自定定义的都驻留 3.乘数为1的时候 就是赋值 4.python3.7 乘法的时候总长度不能超过4096
总结: 小数池 -- 支持: str,int,bool 小数据池数字: -5 ~ 256 小数据池字符串: 乘法时长度不能超过20
怎么能自己驻留? 需要使用python的内置模块
from sys import intern a = intern("@@@@@@"20) b = intern("@@@@@@"20) print(a is b) # 自己进行驻留