gpt4 book ai didi

python - 从 bytearray 转换为 bytes 会产生一个副本吗?

转载 作者:太空狗 更新时间:2023-10-29 21:15:24 26 4
gpt4 key购买 nike

从可变的 bytearray 类型转换为非可变的 bytes 类型会产生一个副本吗?是否有任何与之相关的成本,或者解释器是否只是将其视为不可变的字节序列,就像在 C++ 中将 char* 转换为 const char* const 一样?

ba = bytearray()
ba.extend("some big long string".encode('utf-8'))

# Is this conversion free or expensive?
write_bytes(bytes(ba))

这在 bytes 是它自己的类型的 Python 3 和 bytes 只是 str 的别名的 Python 2.7 之间有区别吗?

最佳答案

创建了一个新副本,在 Python 2 或 3 中,缓冲区不在 bytesarray 和新的 bytes 对象之间共享。

您不能共享它,因为 bytesarray 对象仍然可以在别处引用并改变值。

有关详细信息,请参阅 bytesobject.c source code , 其中 buffer protocol用于创建数据的直接副本(通过 PyBuffer_ToContiguous() )。

关于python - 从 bytearray 转换为 bytes 会产生一个副本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35880065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com