bytearray
之间有什么区别,例如list
或tuple
?
顾名思义,bytearray
必须是array
,其中包含byte
个对象。
在python中,似乎同等对待bytes
和str
>>> bytes
<type 'str'>
那么,有什么区别?
此外,如果您打印bytearray
,结果非常奇怪
>>> v = bytearray([200, 201])
>>> print v
ÈÉ
似乎它会转换chr(integer)
中的整数,是吗?那么bytearray
有什么用?
答案 0 :(得分:10)
您在某种程度上是正确的:在Python 2中,bytes
与str
类型同义。这是因为最初没有bytes
对象,只有str
和unicode
(后者用于unicode字符串,即具有多字节功能)。当Python 3出现时,他们改变了整个字符串的东西并使unicode成为默认的Python 3 str
类型,并且他们添加了bytes
作为原始字节序列的类型(使其等同于Python 2的{{1}对象)。
因此,在Python 3中,str
和str
之间存在差异,Python 2中的相应类型为bytes
和unicode
。
现在使str
类型有趣的是它是可变的。上面的所有字符串和字节序列都是不可变的,因此每次更改时,您都要创建一个新对象。但是你可以修改bytearray
个对象,使它们在你需要修改序列中的单个字节的各种目的中变得有趣。