gpt4 book ai didi

python - 为什么 id 函数对整数和 float 的行为不同?

转载 作者:太空狗 更新时间:2023-10-30 02:32:53 25 4
gpt4 key购买 nike

我尝试了以下代码,它给了我不同的输出。

>>> foo1 = 4
>>> foo2 = 2+2
>>> id(foo1)
37740064L
>>> id(foo2)
37740064L

>>> foo1 = 4.3
>>> foo2 = 1.3+3.0
>>> id(foo1)
37801304L
>>> id(foo2)
37801232L
>>>

我正在使用 python 2.7.2。为什么 id 函数在 float 的情况下返回不同的值,而在整数的情况下返回相同的值?

最佳答案

那是因为 id 在数字常量中的结果是实现定义的。

在您的情况下,Python 2.7.2,IIRC,问题是编译器将一些有用的整数常量构建为单例(从 -1 到 100 左右)。理由是这些数字的使用如此频繁,以至于每次需要时动态分配它们是没有意义的,它们只是被重复使用。

但是对于 float 值来说,持续的单例优化没有用,除了可能是 0.0 之外,它们太多了!因此,每次需要一个新的 float 值时,它都会被分配,并获得不同的 id。

如需更深入的了解,请阅读源代码! This file来自 Python3,但思路是一样的:寻找 small_ints 数组。

关于python - 为什么 id 函数对整数和 float 的行为不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15996984/

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