Python中的变量是引用或名称,不像C中的变量等。
这段代码:
x=y=Queue()
表示“允许名称
y引用通过调用在内存中创建的对象
Queue(),并允许该名称
x引用
y指向的对象。” 这意味着两个变量都指向同一个对象-
您可以使用进行验证
id(x) == id(y)。
这段代码:
x=Queue()y=Queue()
表示“允许名称
x引用由制成的一个对象
Queue(),并允许名称
y引用由制成的另一个对象
Queue()”。在这种情况下,
id(x) ==id(y)是
False
这通常会咬你:
a = [1,2,3,4,5]b = ab.append(6)print(a)# [1,2,3,4,5,6] even though we didn't seem to do anything to a!
要解决此问题,请
import copy; b = a.copy();改为执行
b = a。
但是,这种行为不会发生在像整数这样的不可变对象上:
a = 7a += 1
这 不会 转到
a引用的对象并通过添加一个对象来更改它,而是
a从对象7取消引用,并将其引用到表示
a+
1(即8)的先前值的对象。这与对可变对象执行的操作不同,就像上一个示例中的列表 一样 -追加到列表 确实会 更改变量所引用的对象。
因此,我们可以这样做:
a = 7b = aa += 1print(a)# 8print(b)# 7



