你能指出Python bytearray
有用的场景吗?它只是一个支持列表方法的非unicode字符串,无论如何都可以用str
个对象轻松实现吗?
我理解有人认为它是“可变字符串”。但是,我什么时候需要这样的东西?而且:不像字符串或列表,我严格限于ascii,所以无论如何我更喜欢其他人,那不是真的吗?
答案 0 :(得分:3)
巴赫,
bytearray
是一个可变的内存块。为此,您可以将任意字节推入其中并仔细管理内存分配。虽然许多Python程序员从不担心内存使用,但我们这些人都有。我在高负载网络操作中管理缓冲区分配。有许多可变阵列的应用 - 太多无法计算。
将bytearray
视为可变字符串是不正确的。事实并非如此。它是一个字节数组。字符串具有特定的结构。 bytearray
没有。您可以根据需要解释字节。字符串是单向的。但要小心,使用Unicode字符串时有很多极端情况。 ASCII
字符串比较微不足道。现代代码横跨国界。因此,Python是相当完整的基于Unicode的字符串类。
bytearray
显示缓冲区协议分配的内存。这个非常丰富的协议是Python与C互操作的基础,支持numpy和其他直接访问内存技术。特别是,它允许将内存轻松地构建为C或FORTRAN顺序的多维数组。
您可能永远不必使用bytearray
。
Anon,Andrew
答案 1 :(得分:2)
deque
似乎需要比bytearray
更多的空间。
>>> sys.getsizeof(collections.deque(range(256)))
1336
>>> sys.getsizeof(bytearray(range(256)))
293
我猜这是因为布局。
如果你需要使用bytearray的样本我建议searching the online code with nullege。
bytearray
还有一个优点:您无需为此导入任何内容。这意味着人们会使用它 - 无论它是否有意义。
进一步阅读有关bytearray的信息:the bytes type in python 2.7 and PEP-358