bytearray的使用场景

6 投票
2 回答
1243 浏览
提问于 2025-04-17 20:54

你能举个例子说明一下Python的bytearray有什么用吗?它是不是就是一种不支持unicode的字符串,但又能用列表的方法,这些其实用str对象也能做到呢?

我知道有些人把它看作是“可变字符串”。不过,我什么时候会需要这样的东西呢?而且:跟字符串或列表不同,我只能使用ascii字符,所以无论如何我还是更喜欢用其他的,这不是吗?

2 个回答

2

deque 似乎占用的空间比 bytearray 多得多。

>>> sys.getsizeof(collections.deque(range(256)))
1336
>>> sys.getsizeof(bytearray(range(256)))
293

我猜这是因为它们的布局不同。

如果你需要使用 bytearray 的示例,我建议你可以去 nullege网站上搜索相关代码

bytearray 还有一个额外的好处:你不需要导入任何东西就可以使用它。这意味着人们会使用它——不管它是否合理。

想了解更多关于 bytearray 的内容,可以阅读这个链接:Python 2.7 中的 bytes 类型和 PEP-358

7

Bach,

bytearray 是一种可以改变的内存块。这意味着你可以随意往里面放入字节,并且可以仔细管理你的内存分配。虽然很多 Python 程序员不太关心内存的使用,但也有一些人会关注。我在高负载的网络操作中管理缓冲区的分配。可变数组的应用非常广泛,数不胜数。

bytearray 看作是可变字符串是不对的。它并不是。它是一个字节数组。字符串有特定的结构,而 bytearray 没有。你可以根据自己的需要来解释这些字节。字符串是一种解释方式。不过要小心,使用 Unicode 字符串时会有很多特殊情况。ASCII 字符串相对简单。现代代码在不同的环境中运行。因此,Python 提供了相对完整的基于 Unicode 的字符串类。

bytearray 显示了通过缓冲区协议分配的内存。这个非常丰富的协议是 Python 与 C 之间互操作的基础,并且支持 numpy 以及其他直接访问内存的技术。特别是,它允许内存轻松地结构化为多维数组,无论是 C 还是 FORTRAN 的顺序。

你可能永远不需要使用 bytearray

Anon, Andrew

撰写回答