我刚刚在检查变量赋值的id时遇到了一种奇怪的行为。我运行了以下代码
a = -5
print(id(a))并获得如下身份
140710231913104在执行木星单元格时,我得到相同的id,如果是a >= -5,则执行多次,而如果指定并运行a < -5,则在执行木星单元后,每次都得到不同的id。在下面的图片中找到摘要

造成这种行为的原因是什么?
发布于 2019-05-10 10:18:44
请看下面的示例:
>>> a=256
>>> b=256
>>> print(id(a),id(b))
(31765012, 31765012)
>>>
>>> c=257
>>> d=257
>>> print(id(c),id(d))
(44492764, 44471284)
>>> 这将帮助您理解整数的意外行为。每当您在范围-5到256范围内创建Int时,实际上只需返回对现有对象的引用。这在python中被称为Integer缓存。
发布于 2019-05-10 10:12:30
来自help(id)
id(obj )返回对象的标识。 这保证在同时存在的对象中是唯一的。(CPython使用对象的内存地址。)
对于小数字(不完全确定有多小),python只在内存中保存了每个数字的一个“版本”。这就是为什么每次分配-5时,都会得到相同的内存位置。当您分配-6时,地址会发生更改。如果你尝试一个更大的数字,你会得到不同的结果每次。示例:
>>> a = 9999999999999999999999; id(a)
140517821614080
>>> a = 9999999999999999999999; id(a)
140517821497216https://stackoverflow.com/questions/56075341
复制相似问题