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'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'
原文地址:https://www.cnblogs.com/yzxing/p/8633592.html