首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python:浅复制copy解决思路

2012-03-09 
python:浅复制copy本人py新手,正在学习,看到有一个函数不是很理解:copy教程里面说copy返回一个新字典,是浅

python:浅复制copy
本人py新手,正在学习,看到有一个函数不是很理解:copy
教程里面说copy返回一个新字典,是浅复制,本身的值想相同的,而不是副本(这个是否意思是指向同一个值?)
然后举了个例子,如下:

Python code
>>> x = {'username': 'admin', 'machines':['foo', 'bar', 'baz']}>>> y = x.copy()>>> y['username'] = 'mlh'>>> y['machines'].remove('bar')>>> y{'username': 'mlh', 'machines': ['foo', 'baz']}>>> x{'username': 'admin', 'machines': ['foo', 'baz']}


这边说在副本中替换的时候原始字典不受影响,但是修改了某个值,原始字典也会改变,不理解呀= =。。。
怎么样的修改才算得上是修改一个值呢??

跪求指导

[解决办法]
浅copy还有个隐藏的知识:
1.在副本字典中修改这些不可变对象(如字符串,数字,元组[只包含不可变对象的元组])是不会影响原始字典
2.在副本字典中修改可变对象,那么原始字典的内容会被影响

原因:不可变对象发生变化时会生成新的引用指向新的值,而可变对象的值发生变化时,不会生成新的引用

热点排行