2024-04-19 12:05:42 发布
网友
我突然有点困惑,我现在可能累了,所以这可能是原因。你知道吗
无论如何,请考虑使用解释器执行以下操作:
> x = {'hello':'world'} > y=x > x= None >y y={'hello':'world'}
为什么y = None在更改后y不是引用了与x相同的值?你知道吗
y = None
y
第二个问题: 两者之间的区别是什么:
x= {'test':1} y = dict(x) VS y = copy.deepcopy(x)
在这种情况下,dictionary对象{'hello': 'world'}在内存中创建,然后x被指定为对它的引用。赋值y=x将第二个引用赋值给dictionary对象,这次赋值给y。你知道吗
{'hello': 'world'}
x
y=x
但是,y不是指向x的指针。重新分配x不会改变y所引用的内容。你知道吗
对于你的第二个问题,在这个具体的例子中,没有区别。你知道吗
使用:
x = {'test':1} y = dict(x)
创建字典的新副本并将其分配给y。你知道吗
y = copy.deepcopy(x)
创建相同的副本。当dictionary的值是一个可变对象(如列表)时,您将看到不同之处。你知道吗
这里,y是x的浅拷贝:
x = {'test': [1,2,3]} y = dict(x)
因此,更改x引用的dictionary对象内部的列表也将出现在y中。你知道吗
x['test'][1] = 0 y # returns: {'test': [1, 0, 3]}
但是,使用:
x = {'test': [1,2,3]} y = copy.deepcopy(x)
将创建主对象及其包含的所有对象的副本。所以现在修改x中的列表不会更改y的值。你知道吗
x['test'][1] = 0 y # returns {'test': [1,2,3]}
在这种情况下,dictionary对象
{'hello': 'world'}
在内存中创建,然后x
被指定为对它的引用。赋值y=x
将第二个引用赋值给dictionary对象,这次赋值给y
。你知道吗但是,
y
不是指向x
的指针。重新分配x
不会改变y
所引用的内容。你知道吗对于你的第二个问题,在这个具体的例子中,没有区别。你知道吗
使用:
创建字典的新副本并将其分配给
y
。你知道吗使用:
创建相同的副本。当dictionary的值是一个可变对象(如列表)时,您将看到不同之处。你知道吗
这里,
y
是x
的浅拷贝:因此,更改
x
引用的dictionary对象内部的列表也将出现在y
中。你知道吗但是,使用:
将创建主对象及其包含的所有对象的副本。所以现在修改
x
中的列表不会更改y
的值。你知道吗相关问题 更多 >
编程相关推荐