名称和它的引用值有什么关系?

2024-06-24 13:38:46 发布

您现在位置:Python中文网/ 问答频道 /正文

读了查尔斯·迪尔巴赫的书《用Python介绍计算机科学》,我有一个问题:

  • 在第210页中,他说“引用是一个值,它引用或“指向”另一个实体的位置。变量的参考值可通过内置函数id确定。“

所以引用就是对象内存中的地址。你知道吗

如果我没弄错的话,当我创建一个变量时,比如:

>>> a = 3

名称a由Python自动放在名称空间中。你知道吗

如果我这样做了:

>>> id(a)
4548344816

我得到对象3内存中的地址,a引用的对象。你知道吗

所以我想知道的是,名称a参考值有什么关系。你知道吗

我猜,当一个名称被放入一个名称空间时,它包括两件事:

  1. 名称本身。

  2. 参考值(对象id)

像这样的一对:a:reference value?你知道吗

如果是这样,是否有一些instrospection工具来查看名称空间中的条目是什么样子的?你知道吗


Tags: 对象函数内存实体名称id关系地址
1条回答
网友
1楼 · 发布于 2024-06-24 13:38:46

总的来说,Python名称空间是作为字典实现的。一个键映射到一个值,在一个命名空间中,键是标识符,名称,值引用名称所绑定的对象。你知道吗

您已经找到了使“reference”部分可见的工具id()函数。可以使用^{}^{}函数访问命名空间映射:

>>> a = 3
>>> globals().keys()
['__builtins__', '__name__', '__doc__', 'a', '__package__']
>>> globals()['a']
3
>>> id(globals()['a'])
4299183224
>>> id(a)
4299183224

但是请注意,在一个函数中,本地名称空间得到了高度优化,locals()返回的字典只是实际结构的单向反映,它只是一个带有引用的C数组。你可以看,但不能触摸,通过这个映射。你知道吗

如果您想进一步可视化Python名称空间的工作方式,请在Online Python Tutor中运行代码;它将向您展示内存中的名称和Python对象是如何交互的。你知道吗

相关问题 更多 >