名称及其参考值如何相关?

时间:2015-02-07 13:25:57

标签: python

阅读书籍"使用Python" 介绍计算机科学,Charles Dierbach,我有一个问题:

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

所以引用只是对象内存中的地址

现在,如果我没有弄错的话,当我创建一个像:

这样的变量时
>>> a = 3

名称 a 由Python自动放入命名空间

如果我这样做:

>>> id(a)
4548344816

我得到的对象 3 的记忆地址是 a 引用的地址。

所以我想知道的是,名称 a 参考值是如何相关的。

我猜测,当名称放入命名空间时,它包含两件事:

  1. 名称本身。

  2. 参考值(对象的ID)

  3. 一对可能:a:reference value

    如果是这样,是否有一些instrospection工具来查看命名空间中的条目是什么样的?

1 个答案:

答案 0 :(得分:5)

Python命名空间总体上是作为字典实现的。键映射到值,在命名空间中,键是标识符,名称和值引用名称绑定的对象。

您已经找到了制作'参考'部分可见,id()功能。您可以使用globals()locals()函数来访问命名空间映射:

>>> 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对象如何交互。