1. 程式人生 > >Python內置函數——bytearray()-暫疑

Python內置函數——bytearray()-暫疑

utf pes arr bytes util null 對象 內置 intern

英文文檔:

class bytearray([source[, encoding[, errors]]])

Return a new array of bytes. The bytearray class is a mutable sequence of integers in the range 0 <= x < 256. It has most of the usual methods of mutable sequences, described in Mutable Sequence Types, as well as most methods that the bytes type has, see Bytes and Bytearray Operations.

The optional source parameter can be used to initialize the array in a few different ways:

  • If it is a string, you must also give the encoding (and optionally, errors) parameters; bytearray() then converts the string to bytes using str.encode().
  • If it is an integer, the array will have that size and will be initialized with null bytes.
  • If it is an object conforming to the buffer interface, a read-only buffer of the object will be used to initialize the bytes array.
  • If it is an iterable, it must be an iterable of integers in the range 0 <= x < 256, which are used as the initial contents of the array.

Without an argument, an array of size 0 is created.

說明:

1. 返回值為一個新的字節數組

2. 當3個參數都不傳的時候,返回長度為0的字節數組

>>> b = bytearray()
>>> b
bytearray(b‘‘)
>>> len(b)
0

3. 當source參數為字符串時,encoding參數也必須提供,函數將字符串使用str.encode方法轉換成字節數組

技術分享
>>> bytearray(‘中文‘)
Traceback (most recent call last):
  File "<pyshell#48>", line 1, in <module>
    bytearray(‘中文‘)
TypeError: string argument without an encoding
>>> bytearray(‘中文‘,‘utf-8‘)
bytearray(b‘\xe4\xb8\xad\xe6\x96\x87‘)
技術分享

4. 當source參數為整數時,返回這個整數所指定長度的空字節數組

技術分享
>>> bytearray(2)
bytearray(b‘\x00\x00‘)
>>> bytearray(-2) #整數需大於0,使用來做數組長度的
Traceback (most recent call last):
  File "<pyshell#51>", line 1, in <module>
    bytearray(-2)
ValueError: negative count
技術分享

5. 當source參數為實現了buffer接口的object對象時,那麽將使用只讀方式將字節讀取到字節數組後返回

6. 當source參數是一個可叠代對象,那麽這個叠代對象的元素都必須符合0 <= x < 256,以便可以初始化到數組裏

技術分享
>>> bytearray([1,2,3])
bytearray(b‘\x01\x02\x03‘)
>>> bytearray([256,2,3]) #不在0-255範圍內報錯
Traceback (most recent call last):
  File "<pyshell#53>", line 1, in <module>
    bytearray([256,2,3])
ValueError: byte must be in range(0, 256)
技術分享

Python內置函數——bytearray()-暫疑