import copy

 字典参照列表结论,看是否有深层嵌套。
 a = {'name':1,'age':2}
 b = a
 a['name'] = 'ff'
 print(a)
 print(b)
 print(id(a),id(b))

 a = {'name':1,'age':2}
 b = copy.deepcopy(a)
 a['name'] = 'ff'
 print(a)
 print(b)
 print(id(a),id(b))
 """
 {'name': 'ff', 'age': 2}
 {'name': 'ff', 'age': 2}
 4301093048 4301093048
 {'name': 'ff', 'age': 2}
 {'name': 1, 'age': 2}
 4301093120 4302783256
 """

 字符串和元组等不可变数据类型,打死都不变
 a = 'ff'
 b = a
 a = 'ff1'
 print(a,b) # ff1 ff

 a = 'ff'
 b = copy.copy(a)
 a = 'ff1'
 print(a,b) # ff1 ff

 a = 'ff'
 b = copy.deepcopy(a)
 a = 'ff1'
 print(a,b) # ff1 ff 

 a = [1,2,3]
 b = [4,5,6]
 c = [a,b]
 d = c
 print(id(c),id(d)) # 4322641352 4322641352
 c.append(9)
 print(c)   # [[1, 2, 3], [4, 5, 6], 9]
 print(d)   # [[1, 2, 3], [4, 5, 6], 9]
 print(id(c),id(d)) # 4322641352 4322641352

 d = copy.copy(c)
 c.append(9)
 print(c) # [[1, 2, 3], [4, 5, 6], 9]
 print(d) # [[1, 2, 3], [4, 5, 6]]
 c[0].append(8)
 print(c) # [[1, 2, 3, 8], [4, 5, 6]]
 print(d) # [[1, 2, 3, 8], [4, 5, 6]]
 如果只是copy的话,copy.copy() 针对外层依旧是深拷贝,但对内层来讲就是浅拷贝了,会改变值。

 d = copy.deepcopy(c)
 c.append(9)
 print(c) # [[1, 2, 3], [4, 5, 6], 9]
 print(d) # [[1, 2, 3], [4, 5, 6]]
 c[0].append(8)
 print(c)  # [[1, 2, 3, 8], [4, 5, 6]]
 print(d)  # [[1, 2, 3], [4, 5, 6]]
 深拷贝, 不管你是啥,只要copy.deepcopy()了。 不管你变不变,我变我是狗。

copy&deepcopy

copy&deepcopy的更多相关文章

  1. Python面试题之copy/deepcopy详解

    copy和deepcopy有什么区别? http://blog.csdn.net/qq_32907349/article/details/52190796 http://iaman.actor/blo ...

  2. copy.copy()与copy.deepcopy()的详解

    copy.copy() 元组和列表调用这个方法效果也不一样. 元组的效果: a = [1,2,3] b = [4,5,6] c = (a,b) e = copy.copy(c) 可以看到:e和c是指向 ...

  3. Python 浅拷贝copy()与深拷贝copy.deepcopy()

    首先我在这介绍两个新的小知识,要在下面用到.一个是函数 id() ,另一个是运算符 is.id() 函数就是返回对象的内存地址:is 是比较两个变量的对象引用是否指向同一个对象,在这里请不要和 == ...

  4. python中的copy.copy和copy.deepcopy

    一个例子就搞清楚 import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷贝 ...

  5. Python 函数参数引用(传值/传址)/copy/deepcopy

    精简版: 传值:被调函数局部变量改变不会影响主调函数局部变量 传址:被调函数局部变量改变会影响主调函数局部变量 Python参数传递方式:传递对象引用(传值和传址的混合方式),如果是数字,字符串,元组 ...

  6. Python 传值和传址 copy/deepcopy

    传值:被调函数局部变量改变不会影响主调函数局部变量 传址:被调函数局部变量改变会影响主调函数局部变量 Python参数传递方式:传递对象引用(传值和传址的混合方式),如果是数字,字符串,元组则传值:如 ...

  7. copy deepcopy辨析

    copy deepcopy讲的是复制源对象的改变对copy出来的对象的影响: 我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在. 所以改变原有被复制对象不会对已经复制 ...

  8. copy & deepcopy

    1 import copy 2 3 字典参照列表结论,看是否有深层嵌套. 4 a = {'name':1,'age':2} 5 b = a 6 a['name'] = 'ff' 7 print(a) ...

  9. [Python] 等号赋值, copy, deepcopy的区别

    参考链接: 1. 介绍python中的可变类型与不可变类型:https://blog.csdn.net/answer3lin/article/details/86430074 (也可以参考转载博客 P ...

随机推荐

  1. 51Nod 1108 距离之和最小 V2 1096 距离之和最小 中位数性质

    1108 距离之和最小 V2基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注三维空间上有N个点, 求一个点使它到这N个点的曼哈顿距离之和最小,输出这个最小 ...

  2. 【福利】十一起,小冰科技所有UWP产品免费半个月

    从十月一日起(UTC协调世界时),至十月十五,小冰科技所有UWP产品免费半个月!!!!!! 注意是UTC哦,中国区,比UTC早8个小时,要等到十月一号早晨八点开始... 现在小冰科技旗下一共发布了 5 ...

  3. QT的radioButton组的使用

    在使用Qt的radioButton控件时,会产生一个疑问,如何让你选择的那个radio得到一个数据,进行判断,网上的一些资料有些不全,容易出错. 所以你得做件事,给每个radioButton进行赋初值 ...

  4. git for c#,子文件的加入

    private static void SubDirFile() { string wkDir = @"E:\DotNet2010\单位project\Git.Client\lib2Test ...

  5. Lucene41PostingWriter源代码分析

    原来看lucene4.0的posting格式(http://blog.csdn.net/jollyjumper/article/details/30017581),发现这还是比較简单的VInt格式,据 ...

  6. springboot+jpa+thymeleaf增删改查的示例(转)

    这篇文章介绍如何使用jpa和thymeleaf做一个增删改查的示例. 先和大家聊聊我为什么喜欢写这种脚手架的项目,在我学习一门新技术的时候,总是想快速的搭建起一个demo来试试它的效果,越简单越容易上 ...

  7. win64环境下使用curl命令

    想在windows环境下使用curl命令,其实很简单,简单配置如下: 工具下载 在官网下载工具包:https://curl.haxx.se/download.html 我这里下载的是zip版本的,下载 ...

  8. Linux chown

    在学习 兄弟连 linux教学视频 的时候,我将所学的 linux 命令记录在我的博客中,方便自己查阅. 权限管理命令: chown 基础的命令 命令名称:chown 命令英文原意:change fi ...

  9. 《英文写作指南 The elements of style》【PDF】下载

    <英文写作指南 The elements of style>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196361 The el ...

  10. 《高性能MySQL(第3版)》【PDF】下载

    内容简介 <高性能mysql(第3版)>是mysql 领域的经典之作,拥有广泛的影响力.第3版更新了大量的内容,不但涵盖了最新mysql5.5版本的新特性,也讲述了关于固态盘.高可扩展性设 ...