1,==
两个等号比较的是数值,is比较的是内存地址。print(id())查看的内存地址。
小数据池只存在于数字与字符串中,数字 是 -5^^256,是为了节省空间。
字符串1,如果含有特殊字符,不存在小数据池,单个字符串('a')*int int>20不存在于小数据池
其他都不存在小数据池。
is 比较的是id 地址print(a is b)
2,数据类型byte与str字符串的操作方法一样。
1,编码之间的二进制互不识别
2,存储和传输是010101。但不能是Unicode的二进制。
3,python3x中的str在内存中的编码是unicode,python3x中的字符串不能直接存储和传输。
4,
python3x 中的编码:
python3x 中 str 在内存中的编码方式是unicode。python3x 中的str不能直接存储,和发送。
bytes 他的编码方式是非unicode(utf-8,gbk,gb2012.....)。
对于英文:
str: 表现形式:s = 'laonanhai'
内部编码:unicode
bytes:
表现形式:s = b'laonanhai'
内部编码:非unicode.
对于中文:
str: 表现形式: s = '中国'
内部编码:unicode
bytes: 00000001
表现形式:s1 = b'xe4xb8xadxe5x9bxbd'
内部编码:非unicode.
5,是由 unicode编码成utf-8的byte类型。
s = '中国' s1 = s.encode('utf-8') print(s1) #b'xe4xb8xadxe5x9bxbd'
由 unicode 编码成 gbk 的byte类型
s = 'alex' s2 = s.encode('gbk') print(s2)#b'alex'
由 utf-8 解码成unicode
s = 'alex' s1 = s.encode('utf-8') s2 = s.encode('gbk') s3 = s1.decode('utf-8')#decode解码 print(s3)
由gbk 先转化成unicode 再变成utf-8
s = 'alex' s1 = s.encode('gbk') s2 = s1.decode('gbk').encode('utf-8')#由gbk 先转化成unicode 再变成utf-8 print(s2)#b'alex'