一.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)