1. 程式人生 > >python中一些小的知識點

python中一些小的知識點

asc byte 知識 error nbsp 中一 文件 users cte

1:只有數字,字符串有小數據池

小數據池:在一定範圍內,即使分別給兩兩個變量賦相等的值,它們的id地址還會是相同的

數字範圍: -5 ~ 256

字符串:1:不能有特殊字符

    2:str*20 還是同一個地址,str*21就不是同一個地址

2:編碼

ascll:

  A: 00000001  8位  一個字節

unicode:

  A: 00000001 00000001 00000001 00000001  32位  四個字節

  中: 00000001 00000001 00000001 00000001  32位  四個字節

utf-8:

  A: 00000001  8位  一個字節

  中: 00000001 00000001 00000001  24位  三個字節

gbk:

  A: 00000001  8位  一個字節

  中:00000001 00000001  16位  兩個字節

1:各個編碼之間的二進制是不能相互識別的,會產生亂碼

2:文件的儲存,傳輸,不能是unicode,只能是其他幾種

3.python3中的編碼

1:python3中str在內存中是用unicode編碼的

2:bytes類型:str進行存儲和傳輸需要用到

3:表現形式與編碼方式:

對於英文

            str:表現形式:s = ‘python‘

               編碼方式:00000...  unicode

            bytes:表現形式:s = b‘python‘

                編碼方式:0000... utf-8, gbk等

1 s = python                                            
2 s1 = bpython                                          
3                                                         
4 print(s,type(s))    # 輸出結果:  python <class ‘str‘>       
5 print(s1,type(s1))  # 輸出結果:  b‘python‘ <class ‘bytes‘>  

對於中文:

            str:表現形式:s = ‘中國‘

               編碼方式:00000...  unicode

            bytes:表現形式:s = b‘x\e23\e34\e65\e32\e90\e67‘

                編碼方式:0000... utf-8, gbk等

1 s = 中國                                                                                                             
2 s1 = b中國                                                                                                           
3 print(s,type(s))                                                                                                     
4 print(s1,type(s1))         #輸出結果:     File "C:/Users/XZB/PycharmProjects/s1/day5/第一次考試試題.py", line 133               
5                            #              s1 = b‘中國‘                                                                 
6                            #                  ^                                                                      
7                            #          SyntaxError: bytes can only contain ASCII literal characters.                  
8                                                                                                                      

4.如何將str編碼成bytes?

 1 #英文                                                                                     
 2 s = python                                                                            
 3 s1 = s.encode(utf-8)                                                                  
 4 s2 = s.encode(gbk)                                                                    
 5 print(s1,s2)                #輸出結果:b‘python‘ b‘python‘                                   
 6                                                                                         
 7 #中文                                                                                     
 8 s = 中國                                                                                
 9 s1 = s.encode(utf-8)                                                                  
10 s2 = s.encode(gbk)                                                                    
11 print(s1,s2)                #輸出結果:b‘\xe4\xb8\xad\xe5\x9b\xbd‘ b‘\xd6\xd0\xb9\xfa‘       
12                                                                                         

python中一些小的知識點