在this question的讨论之后,我很好奇。似乎bytes()
的行为在python3中发生了变化。在the docs for py3中,它现在被列为内置函数,其行为与bytearray()
相同,除非结果是不可变的。它在py2文档中没有出现在同一个地方。
在通过文档挖掘一段时间后,我无法找到任何详细说明从2变为3的内容,但看起来确实有些东西。有什么不同,为什么会改变?
来自评论中关于py3的评论中的链接问题
bytes(1)返回b'00'
但在2.7.5
>>> bytes(1)
'1'
答案 0 :(得分:4)
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