请解释Python的“传指针”的方法

28 浏览
0 Comments

请解释Python的“传指针”的方法

这个问题已经有了答案:

Python函数的引用调用[duplicate]

a = 5

a并不直接存储值5,而只是存储值5所在对象的地址,这是正确的吗?因此它是一个引用变量。

b = a 

现在我觉得,b 似乎不再存储 a 的地址,而是实际存储了 a 的\"值\",这个\"值\"是指对象5的地址。这不是 Python 进行按值传递的结果吗?

但我该如何理解这种表面上的不符呢?

谢谢!

admin 更改状态以发布 2023年5月21日
0
0 Comments

不存在任何差异。

把赋值 a=5 理解为在数字 5 周围标记了一个名为'a'的标签。

现在,如果你设置 b=a,python会查找被标记为 a 的内容(即5),并给它附上一个新标签叫做 b

赋值运算符从来不涉及变量名。它们总是追踪引用然后引用追踪到的

事实上,它的工作方式描述得不够准确,因为对于像int这样的简单数据类型,内存中不仅仅有一个数字5。但是你可以假装它就像这样运行,而且永远不会感到惊讶。

如果你使用列表而不是一个简单的整数,这更容易理解:

a = [1, 2, 3]
b = a

只存在一个列表,现在 ab 均指向它,这就解释了以下内容。

>>> b[0] = 5
>>> a
[5, 2, 3]

0