python中一些小的知識點
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 = b‘python‘ 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中一些小的知識點