python - 对于 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 ”改了回来,它的地址又变回原来的地址了。
解决方案
推荐阅读
- javascript - 返回javascript中的特定标头
- uml - 开发软件时,我什么时候应该创建 UML 图?
- git - 从 github 安装 Angular 包失败
- python - Pandas:为什么 csv 列中的浮点数据在导入后有时会变成对象?
- r - 更改 data.table 中的列需要包含 data.table 的列名的变量
- pandas - 如何根据条件删除行
- sql-server - 如何优化与另一个表连接的巨大表的更新?
- android - 错误:如果没有 @Inject 构造函数或 @Provides-annotated 方法,则无法提供 Dagger/MissingBinding CryptoCurrencyViewModelFactory
- sql - 在 PostgreSQL 中使用带有 array_to_json 的“LIMIT OFFSET”
- c# - 所选文本的替换仅适用一次