python - 字节从 py2 到 py3 的行为变化

标签 python python-2.7 python-3.x casting

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/

相关文章:

python - 当某些标签自闭且不同时时,BeautifulSoup可以解析xml吗

python - Selenium Geckodriver Firefox 在 CRONTAB 中不工作,在终端上工作

python - 添加一个在其他人共享 x 轴时不共享 x 轴的子图

python - 在python中的json文件中存储具有子列表的字符串列表

python - 为什么 Windows 会报告将随机行数写入具有与 osx 不同的 float-rounding 的文件所花费的时间?

python - 如何在 python2 中使用 geopandas 移动多边形

python - 为什么函数标签在该函数的范围内,但类方法标签不在其自身范围内?

python - 了解 Kadane 算法 (Python) 中发生的事情

python - 使用 Boto3 下载 S3 文件

Python:初始化空嵌套列表时的奇怪列表行为