1. is 和 == 的区别:
id(变量)返回给你这个变量的内存地址.
s1 = "alex"
s2 = "alex"
print(id(s1),id(s2)) 内存地址是一样的
lst1 = [1,4,7]
lst2 = [1,4,7]
print(id(lst1),id(lst)) 内存地址不一样
小数据池(常量池):把我们使用过得值存储在小数据池中,小数据池给数字和字符串使用,其它数据类型不存在.
纯文字信息和下划线,会被添加在小数据池中,如果有特殊字符的,不会被添加到小数据池,每次都是新的.
is 比较的是内存地址, == 判断两边得值是否相等.
2. 编码
ASCII 8bit 1byte 英文大小写字母,特殊字符,数字.
GBK 16bit 2byte中文兼容ASCII
UNICODE 32bit 4byte 万国码,占空间 ,浪费.
UTF - 8 unicode的升级版,英文8bit 1byte , 中文 24bit 3byte.
传输过程中用:UTF - 8 或 GBK 不用UNICODE (因为浪费资源)
内存中,我们程序运行的过程中,编码是unicode.转换的时候,GBK不能和utf-8 直接转换,但是可以通过UNICODE转换.
在程序中字符串可以编码成bytes类型的数据.
编码encode() 编码的转换.
s = "alex"
print(s.encode("utf-8"))
print(s.encode("GBK"))
打印出来的都是b"alex"
s = "中"
print(s.encode("utf-8)) b'\xe4\xb8\xad'
print(s.encode("GBK")) b'\xd6\xd0'
编码之后的东西和之前的是一样的,只是看着不一样.