a = 5
a不是持有值5本身而只是持有对象5的地址,对吗?所以它是一个参考变量。
b = a
现在在我看来b
,而不是再次持有a
的地址,实际上是持有a的"value"
,这是对象的地址5. Isn& #39;这是Python传递值的结果吗?
但我应该如何理解这种明显的差异呢?
谢谢!
答案 0 :(得分:1)
没有差异。
将作业a=5
视为标记标记' a'大约5点。
现在,如果设置b=a
,python会查找标记为a
(5)的内容,并为其附加新标签b
。
赋值运算符从不引用变量的名称。他们总是追逐参考,然后参考追逐的值。
事实上,它并没有像我描述的那样工作,因为对于像int这样的简单数据类型,内存中只有一个5的副本。但你可以行动就像它那样工作,并且不会感到惊讶。
如果使用列表而不是简单的整数,则更容易理解:
a = [1, 2, 3]
b = a
现有只有一个列表,a
和b
现在都引用它,这解释了以下内容。
>>> b[0] = 5
>>> a
[5, 2, 3]