is 与 == 的区别
一. is 和 == 的区别
首先由 ID() 可以看出来的问题:
s = 'bowen' print(id(s)) # 2971642147704
s = 'bowen' print(id(s)) # 2971642147704
从这能看出来字符串两次输出的地址都是相同的
li = [1,'nihao',2] print(id(li)) # 2817879148680 li = [1,'nihao',2] print(id(li)) # 2817879149384
从这看出来列表的地址是不同的
总结:字符串的都是一样的.然而列表的地址就不一样.
字符串主要是有小数据池(也叫常量池),字符串是通过小数据池存一个数据,当你在打印同一数据时,如果之前存在现在输入的字符串或是整数,那么取出的值是与之前的值是同一位置,这是小数据池的存在意义.
== 双等表示内容是否相等
区别: is 主要 比较的是地址
==主要比较的是值
二. 编码的补充
1.Python3.内存使用的是Unicode码
2.Python2.使用的是ASCII码
3.ASCII.是最早的编码.里面有英文大写字母,小写字母,数字,特殊的字符,不能识别中文,
8bit 1个byte
4.gbk码.中国国标码 16bit 2个字节
5.Unicode码.万国码 32bit 四个字节
6.utf-8码.俗成长度可变的万国码
1.英文: 8bit 1byte
2.欧洲文字: 16bit 2byte
3.中文: 32bit 3byte
以上的所述;除了ASCII码以外,都不能直接转换.
三.bytes的表现形式
1. 英文 b'byte' 英文的表现形式与字符串相似.
2. 中文 b'\xe4\xb8\xad'
字符串在传输时转换成byes=> encode来完成
s = "alex" print(s.encode("utf-8")) print(s.encode("GBK")) 结果: b'alex' b'alex' s = "中" print(s.encode("UTF-8")) print(s.encode("GBK")) 结果: b'\xe4\xb8\xad' b'\xd6\xd0
注意:英文编码之后的结果和原字符串一致,中文编码之后根据编码的不同,编码的效果也不同
英文所有的编码都适用于英文,英文都是 8bit 一个字节 而中文是在不同的编码中显示的雅诗不同的
编码后的的类型是bytes类型的.在网上传输和存储也是bytes类型的.在接受是也应是bytes类型的,这时候可以用decode()来进行解码操作.八bytes类型转化为字符串类型:
s = "我叫李李嘉诚" print(s.encode("utf-8")) 这是编码过程: b'\xe6\x88\x91\xe5\x8f\xab\xe6\x9d\x8e\xe5\x98\x89\xe8\xaf\x9a' 这是解码过程: print (b'\xe6\x88\x91\xe5\x8f\xab\xe6\x9d\x8e\xe5\x98\x89\xe8\xaf \x9a'.decod e("utf-8"))
每天五个学习中的英文单词:
1.capitalize 首位字母大写;
s = 'abc' s1 = s.capitalize() print(s1)
2.upper 全部变大写;
s = 'abc' s1 = s.upper() print(s1)
3.lower 全部小写;
s = 'ABC' s2 = lower() print(s2)
4.encode 编译
s = '刘博文' s1 = s.encode('utf-8') print(s1) 结果: b'\xe5\x88\x98\xe5\x8d\x9a\xe6\x96\x87'
5.decode 解码
s = '你好' print(s.encode('utf-8')) 结果: s1 = b'\xe4\xbd\xa0\xe5\xa5\xbd' print(s1.decode('utf-8')) 结果: 你好

浙公网安备 33010602011771号