gpt4 book ai didi

python - 如何在两个不同的内存位置创建 int 1 ?

转载 作者:行者123 更新时间:2023-12-02 08:25:30 25 4
gpt4 key购买 nike

我想向其他人展示使用 is 而不是 == 来比较整数可能会失败。我以为这会起作用,但事实并非如此:

>>> import copy
>>> x = 1
>>> y = copy.deepcopy(x)
>>> x is y
True

对于更大的整数,我可以轻松做到这一点:

>>> x = 500
>>> y = 500
>>> x is y
False

如何使用较小的整数来演示同样的事情,这些整数通常在 python 中用于类似枚举的目的?

最佳答案

以下示例在 Python 2 和 3 中均失败:

>>> n=12345
>>> ((n**8)+1) % (n**4) is 1
False
>>> ((n**8)+1) % (n**4) == 1
True

原因略有不同。 Python 2 使用 int 类型表示小整数,使用 long 类型表示任意精度值。仅保留 int 类型,因此当返回 1L 时该示例会失败。

Python 3 仅使用任意精度类型(并将其重命名为 int)。该示例失败,因为余数计算在内部计算值 1 并返回它。仅当创建对象时才会进行驻留检查,并且该对象是在计算开始时创建的,并且其值为 1 之前。

关于python - 如何在两个不同的内存位置创建 int 1 ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21456318/

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