一、编码的种类:
1 acsic码 基本不用 不同编码之间互用会产生乱码,
2unicode A 字母 4个字节 00000000 00000000 00100100 01000000
中 文 4个字节 00000000 00000000 00100100 00000000
3utf-8 中文 A 字母 1个字节 00000001
欧 洲 2个字节 00000000 00000000 00100100 00000000
亚洲 中文 3个字节 00000000 00000000 00000000 00100100 00000000
4 gbk A 字母 2个字节 00000000 00001000
中文 亚洲 2个字节 00100100 00000000
二: 字节(bytes)和 字符串 (str)的区别:
bytes :表现形式: s = ‘Q’ b1 = s.encode ('utf-8') print (b1) b1 = b'Q'
内部存储是(utf-8 ,gbk ,gb232等)
s1 = '晓梅'
b11 = s1.encode('utf-8')
表现形式: s = b'\xe6\x99\x93\xe6\xa2\x85' (utf-8,gbk,gb2312.....)010101
0000 1000 0000 0000 0000 0001 0000 1001 0000 0000 0000 0001
注意:在utf-8 的情况下b 后边有6个 (e6 99 等) 说名 晓梅 是中文 utf-8 是两个字6个字节
s2 = '晓梅'
b22 = s1.encode('gbk')
print(b22)
b'\xcf\xfe\xc3\xb7'
表现形式: s = b'\xcf\xfe\xc3\xb7' (utf-8,gbk,gb2312.....)010101
0000 1000 0000 0000 0000 0001 0000 1001
注意:在gbk 的情况下b 后边有4个 (cf xf 等) 说名 晓梅 是中文 ggbk 是两个字4个字节
str 的表现形式 s = "wangyan' 内部存储是(Unicode)
三 id(内存地址) ==是比较的值 is是内存抵制的比较
列表 字典 元祖 set 内存地址都是不一样的
于int 小数据池
int : 范围:-5---256 创建的相同的数字,都指向同一个内存地址。空格除外
str : 字符串一般都指向想同的内存地址,空格除外。
s = 'alex'
print (s,type(s))
print(s,type(s),id(s)) alex <class 'str'> 51749664
如果s1 = s2 = 'wangyan'
print(s1 = s2)
print(s1 is s2)
于int 小数据池
int : 范围:-5---256 创建的相同的数字,都指向同一个内存地址。