18.07.09

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'>

猜你喜欢

转载自www.cnblogs.com/gxj742/p/9284427.html