这是我在编程语言中看到的最奇怪的怪癖之一。考虑以下代码。
In [73]: a = 9
In [74]: id(a)
Out[74]: 1817852288
一切都很好。但是当我计算一个新变量时
In [86]: b = 4+5
In [87]: id(b)
Out[87]: 1817852288
似乎,python编译器/解释器已修复整数9的内存位置1817852288,无论我创建多少变量,它都将引用相同的位置。要支持此主张,请考虑以下问题:
In [90]: array = list(range(0,10))
In [91]: id(array[9])
Out[91]: 1817852288
这意味着编译器将数组放置在内存中,使得列表中的整数9与已经使用的内存位置一致。这是低效的设计吗?是什么赋予了?哪里有陷阱我有什么不来的吗?请对此有所说明。谢谢。