Python第六课笔记

再谈编码

一. 小数据池

  目的:缓存我们字符串,整数,布尔值, 在使用的时候不需要创建过多的对象.

  缓存:int, str, bool.

  int: 缓存范围 -5~256.

  str: 缓存范围 1. 长度小于等于1. 直接缓存

                  2. 长度大于1, 字符串中如果只有数字, 字母, 下划线, 就会缓存.

                  3. 用乘法得到的字符串. 1). 乘数为1, 仅包含数字, 字母, 下划线时会被缓存. 如果包含其他字符, 而长度<=1 也会被驻存.

                               2). 乘数大于1 . 仅包含数字, 字母, 下划线这个时候会被缓存. 但字符串长度不能大于20.

                  4. 使用sys模块中的intern()缓存字符串.

  代码块的关系: 如果在同一个代码块中, 默认的整数和字符串还有布尔值都会进行缓存.  如果涉及计算, 遵从上面的规则.

扫描二维码关注公众号,回复: 3116061 查看本文章

  如果跨代码块, 按照上面的规则执行的.

  优点: 能够提高一些字符串, 整数的处理速度, 省略创建对象的过程.

  缺点: 在小数据池中创建或者插入新的内容会花费更多的时间.

二. is和==的区别

  1. id()  通过id我们可以查到一个变量表示的值在内存中的地址.

  2. is和== 

    == 是判断左右两端的值是否相等, 是不是一致的.

    is 判断左右两端的内容的内存地址是否一致,如果返回True,  那就可以确定这两个变量使用的是同一个对象.

三. 编码的补充

  1. bytes的表现形式.

    1. 英文 b'alex' 英文的表现形式和字符串没什么两样.

    2.  中文 b'\xe4\xb8\xad' 这是一个汉字的UTF-8的bytes表现形式.

  2. decode和encode.

    在python3的内存中. 在程序运行阶段. 使用的是unicode编码. 

    s = "joshua"

    print(s. encode("utf-8"))  unicode转utf-8. 

    print(s. decode("unicode"))  utf-8转unicode.

    utf-8和gbk不能直接转换.

    

猜你喜欢

转载自www.cnblogs.com/Joshuawait/p/9619945.html