is 和 == 的区别, 编码的问题以及解码

1. is 和 == 的区别:

    id(变量)返回给你这个变量的内存地址.

   s1 = "alex"

  s2 = "alex"

   print(id(s1),id(s2))   内存地址是一样的

  

   lst1 = [1,4,7]

   lst2 = [1,4,7]

   print(id(lst1),id(lst))   内存地址不一样

   小数据池(常量池):把我们使用过得值存储在小数据池中,小数据池给数字和字符串使用,其它数据类型不存在.

   纯文字信息和下划线,会被添加在小数据池中,如果有特殊字符的,不会被添加到小数据池,每次都是新的.

    is 比较的是内存地址,  == 判断两边得值是否相等.

2. 编码 

    ASCII   8bit   1byte  英文大小写字母,特殊字符,数字.

    GBK 16bit   2byte中文兼容ASCII

    UNICODE   32bit    4byte  万国码,占空间 ,浪费.

    UTF - 8   unicode的升级版,英文8bit   1byte  , 中文  24bit   3byte.

    传输过程中用:UTF - 8 或 GBK  不用UNICODE  (因为浪费资源)

    内存中,我们程序运行的过程中,编码是unicode.转换的时候,GBK不能和utf-8 直接转换,但是可以通过UNICODE转换.

    在程序中字符串可以编码成bytes类型的数据.

    编码encode()  编码的转换.

    s = "alex"

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

   print(s.encode("GBK"))

   打印出来的都是b"alex"

   s = "中"

   print(s.encode("utf-8))       b'\xe4\xb8\xad'

   print(s.encode("GBK"))       b'\xd6\xd0'

   编码之后的东西和之前的是一样的,只是看着不一样.

posted @ 2018-06-06 20:12  冯坤大神  阅读(119)  评论(0编辑  收藏  举报