我读了一篇文章,python保留了一些数字对象以获得更好的性能。例如:
x = 3
y = 3
print(id(x))
print(id(y))
给出相同的值,这意味着x和y引用完全相同的对象。文章建议保留的数字对象大约在1~100范围内。
所以我测试了以下代码以获得确切的范围:
for i in range(-1000,1000):
x = int(str(i))
y = int(str(i))
if str(id(x)) == str(id(y)):
print(i)
结果很奇怪:打印出-5~256。
我想知道这两个魔法数字是如何产生的以及为什么它们被使用。另外,这两个值会在不同的环境中发生变化吗?
谢谢!
答案 0 :(得分:1)
256是2的幂,小到足以让人们在该范围内使用数字。
-5我不太确定,也许是特殊的价值观?
相关:What's with the Integer Cache inside Python?
这句话也是一句智慧:
这是一个实施细节,不要依赖它发生或不发生