python3之編碼詳解


一,python2與python3的區別

1)python2可以不用括號()

     python3必須加括號

2)python2中有range()有序列表,xrange()生成器

     python3中只有range()

3)python2中輸入是raw_input()

     python3中輸入是input()

二,  =    ==    is  三者的區別

1)  =           是賦值

    ==          是比較,值是否相等

        is          比較的是內存地址

    id(內容)   打印的是內容的id       print(id1(內容),id2(內容))

  is 與 == 區別:

  is 用於判斷兩個變量引用對象是否為同一個, == 用於判斷引用變量的值是否相等。

三,小數據池

        小數據池是int和str在一定范圍內共用一個數據池,范圍-1— -256。小數據池是為了節省內存。

1)str:不含有特殊字符的共用

             ps:  s1 = ‘xiaoming’     

                      s2 = 'xiaoming'

                      print(s1 is s2)

                     結果是True

2)str: ‘一個字符’*小於等於20的數字,還是共用,如果是大於20的就不共用了。

              多個字符不論乘什么數字,都不共用

3)剩下的list  dict  taple  set等都沒有小數據池概念

四,編碼

 ascii碼:         只有英文字母和特殊字符,一個字節是8位

unicode碼:  一個字符是32位,一個字母4個字節

                      一個漢字是32位,一個漢字4個字節

utf-8:           一個字母是8位,一個字母1個字節

                      一個漢字是24位,一個漢字3個字節

gbk;             一個字母是8位,一個字母1個字節

                      一個漢字是16位,一個漢字2個字節

1)各個編碼之間的二進制不能互相識別,會亂碼。

     uncode占得內存太多,所以不能傳輸和儲存。

     utf-8,gbk,utf-16,utf-32,gb2312,ascii等都可以儲存和傳輸。

2)python3在內存中是用unicode編碼方式存儲的,所以不能直接儲存和傳輸,要轉化為其他編碼進行儲存和傳輸。

五,bytes類型

     bytes類型也是一種數據類型。

     bytes不是用unicode方式編碼的,所以可以儲存和傳輸。

     bytes的編碼方式是utf-8,gbk,ascii,gb2312等。

1)英文

      在python3中:str表現形式; s = ''xiaoming''           str編碼形式:unicode

      在bytes中:    str表現形式: s = b''xiaoming''          str編碼形式:utf-8,gbk,ascii,gb2312等

      中文

      在python3中:str表現形式; s = ''中國''          str編碼形式:unicode

      在bytes中:    str表現形式: s = b''x\e91\e91e91\e91e91\e91         str編碼形式:utf-8,gbk,ascii,gb2312等

六,編碼  encode

1)將str>>>bytes    可以指定編碼方式       

     s1 = ‘xiaoming’

     s11 = s1.encode('utf-8')

     print(s11)

     表面是將str轉化為bytes,實際內部是將unicode轉化為utf-8,gbk,ascii,gb2312等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM