以python中的以下示例为例:$ python>>> id(True)140736139690832>>> id(1)140317292515368>>> ^D$ python>>> id(True)140736139690832>>> id(1)140585619968040True在这两种情况下都相同id,但数字1不一样。为什么会这样?它是否在初始化python之前将某些类型分配给内存地址,或者为什么不同项目之间的内存地址有时相同有时不同?从文档:CPython 实现细节:对于 CPython,id(x) 是存储 x 的内存地址。
1 回答
BIG阳
TA贡献1859条经验 获得超6个赞
CPython 为小数字创建可重用存储,但大概它在循环中执行此操作,并将它们存储到堆分配的常量数组中。另一方面,True更像False是“静态全局变量”,在 Python 可执行映像中具有固定地址。
所以这里没有什么真正令人惊讶的。你也不应该依赖这些细节id——在现实世界的 Python 程序中很少使用。
添加回答
举报
0/150
提交
取消
