【发布时间】:2018-10-21 22:06:02
【问题描述】:
我突然有点迷茫,我现在可能累了,所以这可能是原因。
无论如何考虑以下使用解释器:
> x = {'hello':'world'}
> y=x
> x= None
>y
y={'hello':'world'}
为什么y = None 不是y 现在引用与更改后的 x 相同的值?
第二个问题:
有什么区别:
x= {'test':1}
y = dict(x)
VS
y = copy.deepcopy(x)
【问题讨论】:
-
y不指向x它指向x的数据......如果你在别处指向x,y不受它的影响。 - 尝试x["hello"] = 42并评估y。 -
y引用的值与x最初的值相同。然后你将x反弹到别的东西,但这不会影响y。您的deepcopy示例并不是非常有用,因为您无法真正看到使用str或int等非可变类型的区别。尝试使用x = {'test': [1,2,3]}并尝试操作这些值,您会看到差异。
标签: python python-3.x reference