bytes 物件是由單個位元組作為基本元素(8位,取值範圍 0-255)組成的序列,為不可變物件。
bytes 物件只負責以二進位制位元組序列的形式記錄所需記錄的物件,至於該物件到底表示什麼(比如到底是什麼字元)則由相應的編碼格式解碼所決定。我們可以通過呼叫 bytes() 類(沒錯,它是類,不是函式)生成 bytes 例項,其值形式為 b'***xx',其中 '***xx' 為一至多個轉義的十六進製制字串(單個 x 的形式為:\xhh,其中 \x 為小寫的十六進製制轉義字元,hh 為二位十六進製制數)組成的序列,每個十六進製制數代表乙個位元組(八位二進位制數,取值範圍 0-255),對於同乙個字串如果採用不同的編碼方式生成 bytes 物件,就會形成不同的值:
比如上例中的 a 字串物件,其十進位制 unicode 值為 24464,分別使用 'utf-8' 和 'gb2312' 兩種編碼格式將其轉換成 bytes 物件 b 和 c ,結果 b 和 c 的值是完全不同的,由於基於的編碼格式不一致, b c 長度甚至都不相同,前者有 3 個位元組長度,後者有 2 個位元組長度:
另外,對於 ascii 字串,可以直接使用 b'***x' 賦值建立 bytes 例項,但對於非 ascii 編碼的字元則不能通過這種方式建立 bytes 例項:
由於 bytes 是序列,因此我們可以通過索引或切片訪問它的元素:
可以發現如果以單個索引的形式訪問元素,其會直接返回單個位元組的十進位制整數,而以序列片段的形式訪問時,則返回相應的十六進製制字串行。
對於 bytes 例項,如果需要還原成相應的字串,則需要借助內建的解碼函式 decode(),借助相應的編碼格式解碼為正常字串物件,如果採用錯誤的編碼格式解碼,則有可能發生錯誤:
python 標準資料型別
資料型別 set number string list tuple dict bool 標準資料型別 none number string bool 1.none 主要為了判斷存在與否 2.number int long float complex id 查詢記憶體位址 type 查詢資料型別 3....
Python 標準資料型別
python中存在 數字 字串 列表 元組 字典 集合 集合不常用 資料型別。數字資料型別,包括整數 浮點數 複數和布林型別。整數 int 長整型 包括正數,負數,0。浮點數 float 浮點型 帶有小數點的實數。複數 complex 複數由 實部和虛部組成,例 3 4j 或 3 4j 虛部的 j ...
Python標準資料型別 數字型別
python3中標準資料型別有 數字 number 字串 string 列表 list 元組 tuple 集合 set 字典 dictionary 其中不可變資料有3個 數字 number 字串 string 元組 tuple 可變資料有2個 列表 list 集合 set 字典 dictionary...