【发布时间】:2015-10-24 15:02:57
【问题描述】:
我阅读了https://stackoverflow.com/a/19721096/1661745,似乎在 CPython 中,变量只是与引用相关联的名称。
语句 x=5 发生了几件事:
- 创建了一个值为 5 的 int 对象(或者如果它已经找到了 存在)
- 名称 x 已创建(或与最后一个对象解除关联 'x' 标记)
- 对新的(或找到的)int 对象的引用计数是 增加了 1
- 名称 x 与对象相关联 创建(或找到)值“5”。
但是,我仍然不清楚变量是如何在内部实现的。
即:
- 名称 x 已创建(或与最后一个标记的对象“x”解除关联);
那么名字不也占用内存空间吗? sys.sizeof(x) 等于 sys.sizeof(5),我知道 sys.sizeof(x) 只能返回关联引用的大小,但是名称 x 的大小是多少?
- 名称 x 与创建(或找到)值为“5”的对象相关联
这是如何在内部实现的?我认为在较高级别上可以使用 dict 来完成,其中键是变量名 (str?),值是与之关联的引用。
【问题讨论】:
-
“这是如何在内部实现的?” - 在 CPython 中?你应该阅读例如nedbatchelder.com/text/names.html 供高层理解,如果您真的想深入了解,请深入研究相应的源代码。
-
(例如,对于 CPython,hg.python.org/cpython/file/tip/Python/Python-ast.c#l1336)
标签: python variables cpython python-internals