首页 > 解决方案 > 对于 CPython 实现,id(x) 是存储 x 的内存地址吗?

问题描述

根据教程,https://docs.python.org/3/reference/datamodel.html#

每个对象都有一个标识、一个类型和一个值。对象的身份一旦创建就永远不会改变;您可能会将其视为对象在内存中的地址。'is' 运算符比较两个对象的身份;id() 函数返回一个表示其身份的整数。

CPython 实现细节:对于 CPython,id(x) 是存储 x 的内存地址。

但是,当我检查两个不同变量的 id 时,地址是相同的。它们对我来说只是相同的值,如何在这里解释它们具有相同内存地址但不干扰彼此修改的 CPython 实现?

>>> a=1
>>> b=1
>>> a is b
True
>>> id(a)
4475991184
>>> id(b)
4475991184
>>> a=2
>>> id(a)
4475991216
>>> a=1
>>> id(a)
4475991184

我把变量“ a ”改了回来,它的地址又变回原来的地址了。

标签: pythoncpython

解决方案


推荐阅读