小数据池与编码

小数据池.
目的:缓存我们字符串,整数,布尔值。在使用的时候不需要创建过多的对象
缓存: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等)
posted @ 2018-09-03 23:30  写bug的日子  阅读(152)  评论(0编辑  收藏  举报