1.is和==的区别
id()内存地址
例:
s="***是***"
abc=id(s)
print(abc) ==<2573374364144>
例:
lis=["花生","莲蓬","荷花"]
lis1=["花生","莲蓬","荷花"]
print(id(lis))
print(id(lis1))
==<1965904831112
1965904831048>#内存地址不一样
例:
s="花生"
s1="花生"
print(id(s))
print(id(s1))
==<1486646978848
1486646978848>#内存地址一样
字符串会进入小数据池,会对字符串进行缓存,为了节省内存.
字符串(str).整形(int).布尔(bool)都有小数据池.
列表(list).元组(tuple).字典(dict)没有小数据池.
注意:在使用字符串的时候,python会帮我们把字符串进行缓存,在下次使用的时候,可以直接指向这个字符串即可,可以节省内存.
==判断左右两端是否相等
is判断左右两边的id是否相等,比较内存地址
例:
lis=["花生","莲蓬","荷花"]
lis1=["花生","莲蓬","荷花"]
print(lis==lis1) ==<Ture>
print(lis is lis1) ==<Flase>
2.编码 encode() 之后的内容是bytes(字节)类型
存储前必须先进行编码
硬盘和网络传输都用UTF-8
例:
s="我饿了"
bs=s.encode("UTF-8")
print(bs) ==<b'\xe6\x88\x91\xe9\xa5\xbf\xe4\xba\x86'>
英文在UTF-8编码之后还是英文
1个中文在UTF-8编码之后是3个字节
3.解码 decode() python本身用的就是unicode编码
用什么编码就用什么解码
例:
bs=b'\xce\xd2\xb6\xf6\xc1\xcb'
print(bs.decode("GBK")) ==<我饿了>解码之后是字符串
例: UTF-8转换成GBK
'\xe6\x88\x91\xe9\xa5\xbf\xe4\xba\x86'
s=bs.decode("UTF-8") 先把UTF-8解码成unicode字符串
bss=s.encode("GBK") 在把字符串用GBK进行编码
print(bss) ==<b'\xce\xd2\xb6\xf6\xc1\xcb'>