我对id
函数及其返回的整数感到有点困惑,这是对Object在内存中的位置的引用(我认为这是正确的)。
因此假设我们在python shell中做的第一件事是>>> id(2)
,我们立即得到一个整数。但是,我从未创建int
对象的实例。是否正在进行实例化?
答案 0 :(得分:2)
嗯,是的。编译器在生成要运行的VM的字节码时实例化它。
虽然从-1到256的整数在CPython中也是特殊的。
import dis
def foo():
a = 2
dis.dis(foo)
...
6 0 LOAD_CONST 1 (2)
3 STORE_FAST 0 (a)
6 LOAD_CONST 0 (None)
9 RETURN_VALUE