day6 基础总结和编码方式
# = 赋值 == 比较值是否相等 is 比较内存地址 li1 = [1, 2, 3] li2 = li1 print(li1 is li2) print(id(li1), id(li2)) #数字,字符串 小数据池 #数字的范围: -5 -- 256 ; ''' 字符串: 1,不能含有特殊字符 2, s*20还是同一个地址,s*21及以后是不同地址 ''' i1 = 6 i2 = 6 print(id(i1), id(i2)) i1 = 300 i2 = 300 print(id(i1), id(i2)) # 剩下的 list dict tuple set l1 = [1, ] l2 = [1, ] print(l1 is l2) s = 'alex' s1 = b'alex' print(s1,type(s1)) s = "中国" print(s, type(s)) s1 = b"中国" //报错 print(s1, type(s1)) s1 = 'alex' # encode 编码,如何将 str-->bytes,()内自定义编码方式 s11 = s1.encode('utf-8') print(s11) s2 = '中国' s22 = s2.encode('gbk') print(s22)
编码方式总结:
ascii
A:00000010 一个字节8位
unicode
A: 00000000 00000001 00000010 00000100 32位 4个字节
中:00000000 00000001 00000010 00000110 32位 4个字节
utf-8
A: 0010 0000 8位 1个字节
中: 00000001 00000101 00000011 24位 3个字节
gbk
A: 00000010 8位 1个字节
中: 00000001 00000010 16位 两个字节
1,各个编码之间的二进制,是不能互相是别的,会产生乱码
2,文件的储存,传输,不能是Unicode(只能是utf-8, utf-16, gbk, gb2312, ascii等)
py3:
str 在内存中是Unicode储存的.
bytes类型
对于英文:
str : 表现形式 s = 'alex'
内部编码方式: 0101011100.... Unicode
bytes:表现形式 s = b'alex' #将str用bytes编码
内部编码方式: 0101011100.... utf-8 gbk.....
对于中文:
str : 表现形式 s = '中国'
内部编码方式: 0101011100.... Unicode
bytes:表现形式 s = b'x\e91\e91\e54\e61\e32\e21' #将str用bytes编码 16进制编码
内部编码方式: 0101011100.... utf-8 gbk.....