有一个标准的 Python 实现,称为CPython。但这不是唯一的方法,目前我正在使用名为PyPy的替代实现。
在Windows 10 x64 上的 Python3.5 的 PyPy 和 CPython 实现的行为中,我有一个奇怪的不一致之处>下一个代码段(感谢@Gabriel,完整示例)
>>> from itertools import repeat
>>> repeat(None, 2**31)
它在 CPython 中给出
repeat(None, 2147483648)
在 PyPy 中时,它以错误消息结尾并出现错误消息
Traceback (most recent call last):
File "<input>", line 1, in <module>
OverflowError: int too large to convert to int
但是当我尝试在 Docker 容器内的 PyPy 中执行此代码段
docker run -it pypy:3-6
它可以正常运行,作为 CPython 版本。
我知道 Windows 版本处于beta阶段,但是没有人能解释它为什么如此运行以及该错误消息表示什么(或应该说什么)吗?
对于 CPython ,但是下一条语句
>>> repeat(None, 2**63)
给予
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: Python int too large to convert to C ssize_t
这些错误是否与某种原因相关?