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中的值
这完全取决于您分配的对象是mutable
还是immutable
。
简而言之-可变对象创建后就可以更改,不可变对象则不能。
考虑到您有一个a
分配给对象的变量,当您将新变量指向该a
变量时,有两种可能性:
mutable
->您将使用新变量指向同一对象immutable
->,则将新对象分配给新变量。您的第一种情况:
a
,这是一个可变对象b
指向同一列表对象。在第二种情况下:
c
不可变int=4
对象。d
。int=8
变量分配一个新的不可变对象c
。有很多关于对象可变的含义的文章,例如:https : //medium.com/@meghamohan/mutable-and-immutable-side-of-python-c2145cf72747
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句