python 的基础 学习 第七天 is id 编码的补充

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'\xe4\xb8\xad\xe5\x9b\xbd'
              内部编码:非unicode.

 5,是由 unicode编码成utf-8的byte类型。

s = '中国'
s1 = s.encode('utf-8')
print(s1)
#b'\xe4\xb8\xad\xe5\x9b\xbd'
由 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'

 

posted @ 2018-03-23 20:26  大叔级别  阅读(213)  评论(0编辑  收藏  举报