深浅拷贝
深拷贝 全部复制
浅拷贝 只复制第一层

__author__ = 'Perfect'
# -*- coding: utf-8 -*-
import copy
# copy.copy() #浅拷贝
#
# copy.deepcopy()# 深拷贝
# a = '123' #赋值 a1 = ''
a2 = a1 #通过赋值 得变量,使用的都是同一个内存地址
print(id(a1))#查看a1 的内存地址
print(id(a2))#查看a2 的内存地址
a3 = copy.copy(a1) #浅拷贝,a1 使用的内存地址 与a1 是一样的内存地址
print(id(a3))#查看浅拷贝之后的内存地址是否与a1 一致 a4 = copy.deepcopy(a1) #深拷贝,无论使用的深拷贝还是浅拷贝,在内存地址中 使用的都是同一个内存地址
print(id(a4))#打印深拷贝之后 在内存中使用的内存地址是否与a1 一致

#总结:对于字符串,深浅拷贝 在内存中使用的都是同一个内存地址.

#元祖、列表、字典之间的深浅拷贝
#浅拷贝

n1 = {'k1':"wo","k2":123,"k3":["huzhi",456]}
n2 = n1
print(id(n1))
print(id(n2))
n3 = copy.copy(n1) #定义n3 浅拷贝n1
print(id(n1)) #对比n1 与 n3 的内存地址是否是一样的
print(id(n3)) #对比n1 与 n3 的内存地址是否是一样的
print(id(n1["k1"])) #对比字典中的元素 是否是一样的
print(id(n3['k1']))#对比字典中的元素是否是一样的

#--------------------------
#深拷贝 是 把 字典的所有元素都拷贝
#如果 深拷贝之后 字典的所有元素 内存地址 都不一样,就说明 深拷贝成功了
#总结:深拷贝就是说 这个 字典 有多少层,就会 进行深拷贝,并且 深拷贝后,原字典 和深拷贝之后的内存地址 是 不同的

k9 = copy.deepcopy(n1) #深拷贝
print(id(n1))
print(id(k9))

 #深浅拷贝之应用实例

__author__ = 'Perfect'
# -*- coding: utf-8 -*-
#深浅拷贝 应用
import copy
#如果有如下字典
dic = {
"cpu":[80],
"mem":[80],
"disk":[80]
}
#----------------浅拷贝实例--------------- print("更改前字典:",dic)
new_dic = copy.copy(dic)#浅拷贝 赋值给 new_dic
new_dic['cpu'][0] = 50 #修改 赋值后的new_dic 字典 cpu 的值
print("更改后字典:",new_dic) #查看 new_dic的值被修改了
print("更改后字典:",dic) #查看原来字典的cpu 值 也被修改了,这就是浅拷贝
#输出:
# {'cpu': [50], 'mem': [80], 'disk': [80]}
# {'cpu': [50], 'mem': [80], 'disk': [80]}
#----------------深拷贝实例---------------
'''
print("更改前字典:",dic)
Lao_dic = copy.deepcopy(dic)
Lao_dic['cpu'][0] = 100
print("更改之后的:",Lao_dic)
print("原来的字典:",dic)
'''
#输出:
# 原来的字典: {'cpu': [80], 'mem': [80], 'disk': [80]}
# 更改之后的: {'cpu': [100], 'mem': [80], 'disk': [80]}

最新文章

  1. Linux入侵检测常用命令
  2. man curl_easy_init(原创)
  3. 《CSS3实战》读书笔记 第三章:选择器:样式实现的标记
  4. CFgym Board Queries (旋转、翻转简化)
  5. iOS 在类别里添加成员变量的方法:objc_setAssociatedObject
  6. thinkphp四种url访问方式详解
  7. Dynamic Programming - Part1
  8. Determining Equality of Objects
  9. 杀死进程 kill -9
  10. jqgrid在页面出来竖型滚动条自动调整列宽
  11. 手工配置tomcat 解决一闪而过~
  12. 微软SQLHelper.cs类
  13. 通过select选项动态异步加载内容
  14. IOS 表视图(UITableVIew)的使用方法(3)名单的索引显示
  15. 动态加载EXE和DLL
  16. iOS 面试题:OC标题的基本概念<延续>
  17. 转载 CSDN 谈谈我对证券公司一些部门的理解(前、中、后台)
  18. WebSocket学习与使用
  19. Intel daal数据预处理
  20. Iframe难点备忘

热门文章

  1. JAVA入门教程 - idea 新建maven spring MVC项目
  2. 利用spring的MultipartFile实现文件上传【原】
  3. 2018牛客网暑期ACM多校训练营(第一场)E Removal(DP)
  4. 错误 3 未找到类型“sdk:Label”。请确保不缺少程序集引用并且已生成所有引用的程序集。
  5. Ganglia 入门介绍及解决fsockopen error: Connection refused问题
  6. JS定义函数
  7. StarUML最新版2.8.1简单使用及代码生成
  8. python作业高级FTP
  9. PHP载入GIF图像造成服务器宕机(CVE-2018-5711)的漏洞复现
  10. 通用redis命令