小数据池
参考:https://www.cnblogs.com/zy740/p/11037902.html
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 是判断两个内存地址是否相同 ==判断等号两边的值是否相同 利用小数据池的运用可以快速的理解is 与等等的区别
2.2 字符串
字符串:1.字符串在做乘法的时候总长度不能超过20,进行驻留 2、自己定义的字符串长度不受限制 字符串必须(字母、数字、下划线)组成,进行驻留
3、特殊字符串(中文除外)定义1个的时候,进行驻留 4、字符串*1 其实就是赋值
如果is判断相同 ==一定相同 如果==判断相同 is不一定相同
a=1000 b=1000 print(a == b)
a="alex"*2 b="alex"*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.1数字
数字全部驻留
3.1.2字符串
1、字符做乘法的时候长度不能超过20 2、自定义的都被驻留 3、乘以为1的时候 就是赋值 4、python 3.7 乘法的时候总长度不能超过2096
总结:小数池 --支持:str ,int,bool 小数据池数字:-5~256 小数据池字符串:乘法时长度不能超过20
怎么能自己驻留? 需要使用python的内置模块
from sys import intern a = intern("@@@@@@"20) b = intern("@@@@@@"20) print(a is b) # 自己进行驻留