Python基础--is、id、编码进阶

= 赋值      == 比较值是否相等       is 比较,比较的是内存地址id(内容)

li1 = [1,2,3]
li2 = li1
li3 = 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)

 

编码进阶

ascii:  A : 00000010     8位 一个字节

unicode     A :00000000 00000001 00000010 00000100  32位 四个字节
                 中:00000000 00000001 00000010 00000110 32位 四个字节


utf-8          A : 00100000    8位 一个字节
                 中 :00000001 00000010 00000110   24位 三个字节


gbk            A :00000110   8位 一个字节
                 中: 00000010 00000110   16位 两个字节

1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
2,文件的储存,传输,不能是unicode(只能是utf-8   utf-16   gbk    gb2312     ascii等)

 

Python 3:
        str 在内存中是用unicode编码。

    bytes类型:编码方式:utf-8,gbk,gb2312,ascii

    str进行存储和传输,需要转换为bytes类型          

对于英文
             str :表现形式:s = 'alex'
                      编码方式: 010101010         unicode
           

              bytes :表现形式:s = b'alex'
                           编码方式: 000101010      utf-8      gbk。

对于中文:
             str :表现形式:s = '中国'
                      编码方式: 010101010         unicode
                        

             bytes :表现形式:s = b'x\e91\e91\e01\e21\e31\e32'
                          编码方式: 000101010       utf-8      gbk。

1 s1 = 'alex'
2 # encode 编码,如何将str --> bytes, (可设置编码方式)
3 s11 = s1.encode('utf-8') 4 #s11 = s1.encode('gbk')
5 print(s11) 6
7 s2 = '中国'
8 s22 = s2.encode('utf-8') 9 #s22 = s2.encode('gbk')
10 print(s22)

 编码、解码

1 #str --->byte  encode 编码
2 s = '哈哈'
3 b = s.encode('utf-8')
4 print(b)
5 #byte --->str decode 解码
6 s1 = b.decode('utf-8')
7 print(s1)

 

posted @ 2018-07-15 16:26  前往Python取经之路  阅读(288)  评论(0编辑  收藏  举报