20180709

一.is与 == 的区别

⑴ id    内存地址

例如:

  s = "alex 是 xxx"

  abc = id(s)

  print(abc)              ==> 得到内存地址

例如:lst = ["周杰伦","AB"]

  lst1=["周杰伦","AB"]                              ==> 字典.列表.元组都没有小数据池

  print(id(lst))                            ==>这两个打印出来的地址不一样

  print(id(lst1))

例如:s = 'AB'

  s1 = 'AB'                            整数(int).字符串(str).布尔(bool)都有小数据池,   小数据池会对字符串进行缓存,为了节省内存

  print(s)                         ==>内存地址一样

  print(s1)

⑵ ==    判断左右两端是否相等和一致        比较的是内容

⑶is判断    判断的内存地址    id()的值来判断

例如:s = "alex"

  s1="alex"

  print(s == s1)                ==>  True

  print(s is s1)                 ==>True     (小数据池)

二.内存里用的是unicode  硬盘和网络传输用的是UTF-8和GBK

⑴encode

例如:s = "李嘉诚的儿子"                              想要存储,必须进行编码

  bs = s.encode("UTF-8")                       #encode    编码之后的内容是bytes类型的数据

  #把字符串编码成UTF-8形式

  #英文:编码之后的结果是英文本身

  #中文:编码之后   UTF-8    一个中文   3个字节

例如:s = "饿了吗"

  bs = s.encode("GBK")                     ==>GBK:一个中文,2个字节

⑵decode     解码(用什么编码就用什么解码)             把bytes编程我们熟悉的字符串

例如:bs = b'xb6xf6xc1xc6xc3xb4'

  bs.decode("GBK")                      ==>解码之后是字符串

例如:GBK ==>UTF-8

  bs = b'xb6xf6xc1xc6xc3xb4'

  #先解码成unicode

  s = bs.decode('GBK')

  #把字符串编码成UTF-8

  bss = s.encode("UTF-8")

  print(bss)

原文地址:https://www.cnblogs.com/lhy979/p/9284250.html