a = [ 1, 2 ]
b = a
a.append(3)
print(b) # shows [ 1 2 3 ] which means b changed
c = 4
d = c
c = 8
print(d) # shows 4 which means d did not change
为什么b改变了,而d没有改变? .append 更改了 b 中存储的值,但 c = 8 并未更改 d 中的值
这两个例子并不等同。
通过做b = a
你在告诉b
指向同一个列表a
指着。如果您通过更改列表a
即使通过内省它也会改变b
。内存中只有一个列表。
在第二个例子中你正在做d = c
这告诉d
指向相同的整数c
确实如此,但你却说c
指向另一个整数。d
不知道这一点,它仍然指向与c
用来指。
使用列表与第二个示例的等效示例将是
a = [1, 2]
b = a
a = []
print(a)
# []
print(b)
# [1, 2]
检查这些可视化:
你的第一个例子
你的第二个例子
我的例子
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)