bytearray([source[, encoding[, errors]]])
返回一个根据参数 source 生成的字节数组(bytes)对象,数组里的元素是可以被修改,并且元素的取值范围为 [0, 255]。
说明
如果可选参数 source 为
- 字符串时,参数 encoding 也必须提供(参数 errors 可选),函数
bytearray()
返回的结果是字符串 source 对应编码 encoding 的字节数组。(通过调用函数str.encode()
的方式转换);
- 整数时(需大于等于0),则返回长度为这个整数(source)的空字节数组;
- 实现了
buffer
接口的object
对象时,那么将使用只读方式将字节读取到字节数组后返回;
- 可迭代对象时,那么这个迭代对象的元素必须为 [0 ,255] 中的整数,以便可以初始化到数组里;
- 缺省,则返回长度为 0 的字节数组。
示例
可选参数 source 为字符串时:
>>> bytearray('人生苦短')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string argument without an encoding
>>> bytearray('人生苦短', 'utf-8')
bytearray(b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad')
>>> bytearray('oooop')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string argument without an encoding
>>> bytearray('oooop', 'ascii')
bytearray(b'oooop')
可选参数 source 为整数或缺省时:
>>> bytearray(0)
bytearray(b'')
>>> bytearray(1)
bytearray(b'\x00')
>>> bytearray()
bytearray(b'')
>>> bytearray(-2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: negative count
可选参数 source 为可迭代对象时:
>>> bytearray([3, 4, 1])
bytearray(b'\x03\x04\x01')
>>> bytearray([3, 4, 256])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: byte must be in range(0, 256)
>>> bytearray([3, 4, 'a'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: an integer is required
>>> bytearray((3, 4, 1))
bytearray(b'\x03\x04\x01')
>>> bytearray((3, 4, 'a'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: an integer is required
修改 bytearray()
返回的数组元素:
>>> a=bytearray('好好学习,study', 'utf-8')
>>> a
bytearray(b'\xe5\xa5\xbd\xe5\xa5\xbd\xe5\xad\xa6\xe4\xb9\xa0\xef\xbc\x8cstudy')
>>> a=bytearray('好好学习,study', 'gbk')
>>> a
bytearray(b'\xba\xc3\xba\xc3\xd1\xa7\xcf\xb0\xa3\xacstudy')
>>> ii='人生苦短,我用Python!'
>>> bb=bytearray(ii, 'utf-8')
>>> bb
bytearray(b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')
>>> bb.decode()
'人生苦短,我用Python!'
>>> bb[:12]=bytearray('生命短暂', 'utf-8')
>>> bb
bytearray(b'\xe7\x94\x9f\xe5\x91\xbd\xe7\x9f\xad\xe6\x9a\x82\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')
>>> bb.decode()
'生命短暂,我用Python!'
>>>