一. 小数据池,常量池
id()查看变量的内存地址
is 和 ==
is 判断内存地址是否一致,
== 判断内容是否一致,左右端的值是否一致
a = 1000
b = 1000
print(a is b)#py文件中得到结果是True,command中得到False
小数据池:一种缓存机制,也被称为驻留机制,网上搜索常量池,小数据池指的都是同一个内容
优点:能够提高一些字符串,整数的处理速度,省略的创建对象的过程
缺点:在'池'中创建或者插入新的内容会花费更多的时间
小数据池只针对: 整数 字符串 布尔值
数字:-5 and 256
字符串:
1. 字符串长度0或者1,都会默认进行缓存
2. 长度大于1,只包含字母,数字,下划线,会缓存
3. 用乘法得到的字符串 ①.乘数为1,仅包含数字,字母,下划线时会缓存,包含其他字符,而长度<+1也会被驻存
②. 乘数大于1,仅包含数字,字母,下划线这个时候会被缓存,但字符长度不能大于20
4. 指定驻留,我们可以通过sys模块的inter()函数来指定要驻留的内容
小数据池的作用:
为了快速的创建字符串对象,可以减少内存的浪费
用缓存的前提:数据可以被共享,不可变
二. 编码
python3中:内存中使用的是unicode码
1 ASCII:最早的编码,里面有英文大写字母,数字,特殊字符,没有中文,8个01代码,8个bit,1个byte
2 GBK:中文国标码里面包含了ASCII 编码和中文常用编码 16bit 2个byte
3 unicode: 万国码,包含所有国家的编码,32个bit , 4个byte 包含ASCII,(不好储存,浪费空间)
4 utf-8:可变长度的万国码,是unicode的一种实现,最小字符占8位
1,英文: 8bit 1byte
2 欧洲文字 16bit 2byte
3 中文 24bit 3byte
综上,除了ASCII码以外,其他信息不能直接转换
s = '我是文字'
bs = s.encode('GBK')
s = bs.decode('GBK')
bss = s.encode('UTF-8')
print(bss)