主要内容:
1.is和==的区别:
id()函数:得到内存地址
s = "alex 是 大 xx" abc = id(s) # 得到内存地址 print(abc)
s = "燃哥" s1 = "燃哥" # 小数据池. 会对字符串进行缓存, 为了节省内存 print(id(s)) print(id(s1))
结果是相同的.
2523241503272 2523241503272
结论:小数据池会对字符串和整数,布尔进行缓存,对元祖,列表,字典不会缓存.
==判断两边的值
is判断内存地址
lst = ["马化腾", "小威"] lst2 = ["马化腾", "小威"] print(lst == lst2) # True print(lst is lst2) # False
2.编码:encode()
ASCII:英文,特殊字符,数字,8bit,1byte
GBK:中文 16bit,2byte
unicode:万国码 32bit,4byte
UTF-8:长度可以改变的unicode.英文:8bit,1byte 欧洲:16bit,2byte 中文:24bit,3byte
英文:编码之后的结果是英文本身 中文:编码之后UTF-8 下. 一个中文3个字节 encode() 编码之后的内容是bytes类型的数据 s="美团外卖" print(s.encode("GBK")) # 用gbk编码,一个中文两个字节 print(s.encode("UTF-8")) #用UTF-8编码,一个中文三个字节 s="alex" print(s.encode("GBK")) print(s.encode("UTF-8"))
3.解码:decode()
bs=b'xe6x9dx8exe5x98x89xe8xafx9axe7x9ax84xe5x84xbfxe5xadx90xe8xa2xabxe7xbbx91xe6x9exb6xe4xbax86' bss=bs.decode("UTF-8") print(bss)
GBK=>utf-8
GBK=>utf-8 bs = b'xb6xf6xc1xcbxc3xb4' s=bs.decode("GBK") #先解码成unicode字符串 bss=s.encode("UTF-8") #把字符串编码成UTF-8 print(bss)