小数据池.
目的:缓存我们字符串,整数,布尔值。在使用的时候不需要创建过多的对象
缓存:int, str, bool、
int: 缓存范围 -5~256
str:
1. 长度小于等于1,直接缓存
2. 长度大于1. 字符串中如果只有数字, 字母, 下划线。 就会缓存
3. 乘法得到的字符串。乘以1,同上, 乘以大于1的数。仅包含数字,字母下划线。最终长度小于20会缓存
4. 使用sys模块中的intern()缓存字符串 from sys import intern intern()制定缓存的内容
代码块的关系:如果在同一个代码块中。默认的整数和字符串还有布尔值都会进行缓存. 如果涉及计算。尊崇上面的规则
如果跨代码块,按照上面的规则执行的
is和==的区别
== 比较的是 值
is 比较的是 内存地址
编码
encode #编码
unicode转化为str,采用encode 编码:
decode #解码为unicode
str转化为unicode ,采用decode 解码:
ascii
A : 00000010 8位 一个字节
unicode A : 00000000 00000001 00000010 00000100 32位 四个字节
中:00000000 00000001 00000010 00000110 32位 四个字节
原来是16位,后升级为32位
utf-8 A : 00100000 8位 一个字节
中 : 00000001 00000010 00000110 24位 三个字节
欧 :16bit,2byte
gbk A : 00000110 8位 一个字节
中 : 00000010 00000110 16位 两个字节
总结
1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
2,文件的储存,传输,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,asciid等)