Python 的內置函數 bytearray 用於創建一個可變的字節數組對象,它是 Python 中處理二進制數據的重要工具之一。bytearray 對象與 bytes 類似,但具有可變的特性,允許就地修改其中的字節數據。
基本語法
bytearray([source[, encoding[, errors]]])
參數説明
-
source(可選):
- 如果未提供參數,將創建大小為 0 的空
bytearray -
可以是以下幾種類型:
- 整數:創建指定長度的
bytearray,並用 null 字節填充 - 可迭代對象:包含 0-255 範圍內整數的序列
- 實現了緩衝區協議的對象(如
bytes):將複製其內容 - 字符串:必須同時指定
encoding參數
- 整數:創建指定長度的
- 如果未提供參數,將創建大小為 0 的空
-
encoding(可選):
- 當
source是字符串時,指定編碼方式(如 'utf-8')
- 當
-
errors(可選):
- 指定編碼錯誤處理方案
特性與行為
- 返回的
bytearray對象是可變的,支持索引賦值和切片操作 - 元素是 0-255 範圍內的整數,表示單個字節
- 支持大多數
bytes類型的操作和方法
示例用法
-
創建空
bytearray:b = bytearray() print(b) # 輸出:bytearray(b'') -
指定長度創建:
b = bytearray(5) print(b) # 輸出:bytearray(b'\x00\x00\x00\x00\x00') -
從字節序列創建:
b = bytearray([65, 66, 67]) print(b) # 輸出:bytearray(b'ABC') -
從字符串創建(需指定編碼):
b = bytearray('hello', 'utf-8') print(b) # 輸出:bytearray(b'hello') -
修改內容:
b = bytearray(b'hello') b[0] = 72 # 修改第一個字節 print(b) # 輸出:bytearray(b'Hello')
常用方法
append(x):添加一個字節extend(iterable):擴展字節序列insert(index, x):在指定位置插入字節pop([index]):移除並返回指定位置的字節remove(x):移除第一個出現的指定字節decode(encoding='utf-8', errors='strict'):解碼為字符串
應用場景
- 需要頻繁修改的二進制數據處理
- 網絡協議實現中處理可變長度的數據包
- 加密算法中需要逐步構建的字節序列
- 二進制文件編輯工具
注意事項
- 修改操作可能會引發
ValueError(如果值不在 0-255 範圍內) - 與
bytes相比有更高的內存開銷 - 在需要不可變數據時應該使用
bytes類型
性能考慮
bytearray 比直接操作字符串更適合處理大量二進制數據的修改,因為:
- 避免了頻繁創建新對象的開銷
- 針對字節操作進行了優化
- 可以直接與 C 擴展模塊交互