我正在与DataStructures Lab合作。我发现:
a = 2
b = 2
print(id(a)) #1632496144
print(id(b)) #1632496144
a和b变量都具有相同的ID但是,当我这样做时
x = 500
y = 500
print(id(x),id(y))
这里写着,如果范围将从-3到256超出,它将给出不同的存储位置。
我的问题是,为什么这些IDE给出不同的结果?
在JUPYTER笔记本中,输出是这样的:2999875658288 2999875658256
不同的存储位置
而在VS CODE中,输出是这样的:
1495642916912 1495642916912
相同的存储位置
Python在缓存中缓存了一些小的,经常使用的值,例如这些值,因此它不必一直创建和销毁这些对象。
这是C API参考C API reference上的简短描述。
[此外,有时Python会对字符串和其他对象执行相同的操作,因此,例如,您可以对字符串“ a”进行如下操作:print(id("a"), id("a"))
,并得到结果140301498960896 140301498960896
。
我认为它使对象保持在256个字节以下,但是我不确定这个数字,因此我找不到它的参考。如果找到参考,我将编辑答案。