对未实例化对象的Python Id调用



我对id函数及其返回的整数有点困惑,后者是对Object在内存中位置的引用(我认为这是正确的)。

因此,假设我们在python shell中做的第一件事是>>> id(2),我们会立即返回一个整数。但是,我从未创建过int对象的实例。是否有正在进行的实例化?

嗯,是的。编译器在生成要运行的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        

最新更新