在this question上进行讨论后我很好奇。看来 bytes()
的行为在 python3 中发生了变化。在 the docs for py3它现在被列为内置函数,其行为与 bytearray() 相同,只是结果是不可变的。它没有出现在 py2 文档中的同一位置。
在深入研究文档一段时间后,我确实找不到任何详细说明从 2 到 3 发生了什么变化的内容,但看起来确实有一些变化。有什么区别以及为什么要更改?
来自某人评论中有关 py3 的评论中的链接问题
bytes(1) returns b'00'
但在 2.7.5 中
>>> bytes(1)
'1'
最佳答案
Python 3 bytes
构造函数采用可选的 int
参数来指定要输出的字节数。使用该构造函数将所有字节初始化为 0 (\x00
),因此 bytes(1) == b'\x00'
。
Python 2 bytes
构造函数与 str
相同,因此只是对其参数进行字符串化:
Python 2.7.5 (v2.7.5:ab05e7dd2788, May 13 2013, 13:18:45)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> bytes is str
True
关于python - 字节从 py2 到 py3 的行为变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18617674/