网络中的 python 名称存在很多混淆,并且文档似乎对名称并没有那么清楚。以下是我读到的关于 python 名称的几件事。
名称是对对象的引用(它们在哪里?堆?)并且名称包含的是地址。(如Java)。
python 中的名称就像 C++ 引用 (int& b),这意味着它是内存位置的另一个别名;即对于
int a
,a
是一个内存位置。ifint& b = a
表示这b
是同一内存位置的另一个名称名称与 C 中自动取消引用的指针变量非常相似。
以上哪些说法是/正确的?
Python 名称中是否包含某种地址,还是只是内存位置的名称(如 C++&
引用)?
python名称存储在哪里,堆栈还是堆?
EDIT
:
从http://etutorials.org/Programming/Python.+Text+processing/Appendix+A.+A+Selective+and+Impressionistic+Short+Review+of+Python/A.2+Namespaces+查看以下行和+绑定/#
每当一个(可能是限定的)名称出现在赋值的右侧,或者单独出现在一行上时,该名称就会被取消引用到对象本身。如果名称尚未绑定在某个可访问范围内,则无法取消引用;尝试这样做会引发 NameError 异常。如果名称后跟左括号和右括号(它们之间可能有逗号分隔的表达式),则在取消引用后调用/调用对象。对于 Python 对象,可以控制和覆盖调用时发生的确切情况;但一般来说,调用函数或方法会运行一些代码,调用类会创建一个实例。例如:
pkg.subpkg.func() # 从命名空间调用函数
x = y # deref 'y' 并将同一个对象绑定到 'x'
这是有道理的。只是想交叉检查它的真实性。请评论和回答