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

__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]}

copy之深浅拷贝的更多相关文章

  1. iOS边练边学--static(作用域),copy(深浅拷贝)

    一.static作用 二.copy

  2. @proprety数组字典字符串用copy和strong区别(深浅拷贝)

    ////  @proprety数组字典字符串用copy和strong区别(深浅拷贝).h//  IOS笔记//// /* _proprety________copy_strong_________h ...

  3. 关于:1.指针与对象;2.深浅拷贝(复制);3.可变与不可变对象;4.copy与mutableCopy的一些理解

    最近对深浅拷贝(复制)做了一些研究,在此将自己的理解写下来,希望对大家有所帮助.本人尚处在摸索阶段,希望各位予以指正. 本文包括如下方向的探索: 1.指针与对象: 2.深/浅拷贝(复制): 3.可变/ ...

  4. 深浅拷贝的应用-copy、mutableCopy

    ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController //如果想让li ...

  5. 深浅拷贝(copy)

    目录 copy 模块 1.拷贝(赋值) 1). x为不可变数据类型 2). x为可变数据类型 3). 可变数据类型(比如列表)内,既有不可变元素,又有容器类型可变元素(比如列表) 2.浅拷贝 3.深拷 ...

  6. iOS Copy 和 MutableCopy的区别 深浅拷贝的区别-供参考

    概述 对于系统的非容器类对象,对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝).如果是对可变对象复制,都是深拷贝,但是copy返回的对象是不可变的. 对于 ...

  7. Python 从零学起(纯基础) 笔记 之 深浅拷贝

    深浅拷贝 1. import  copy#浅拷贝copy.copy()#深拷贝copy.deepcopy()#赋值 = 2.   对于数字和字符串而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个 ...

  8. python——赋值与深浅拷贝

    初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...

  9. Python中的深浅拷贝

    1.什么是深浅拷贝? python中一切皆对象,python中的数字.字符串.元组等,如果存放在了内存中,这部分内存里面的内容是不会改变的,但是也有情况,内存中存放了可变对象,比如说列表和字典,他们的 ...

随机推荐

  1. spring boot 2.0.3+spring cloud (Finchley)3、声明式调用Feign

    Feign受Retrofix.JAXRS-2.0和WebSocket影响,采用了声明式API接口的风格,将Java Http客户端绑定到他的内部.Feign的首要目标是将Java Http客户端调用过 ...

  2. wav音频文件格式解析【个人笔记】(自用)

    1. WAV格式 wav是微软开发的一种音频文件格式,注意,wav文件格式是无损音频文件格式,相对于其他音频格式文件数据是没有经过压缩的,通常文件也相对比较大些.. 支持多种音频数字,取样频率和声道, ...

  3. Tornado的异步非阻塞

    阻塞和非阻塞Web框架 只有Tornado和Node.js是异步非阻塞的,其他所有的web框架都是阻塞式的. Tornado阻塞和非阻塞两种模式都支持. 阻塞式: 代表:Django.Flask.To ...

  4. JS 数组中对象去重 reduce 用法

    对于数组对象,传统的去重方法无能为力,至于forEach().filter()等迭代方法也不好使:真正能做到优雅去重的,是ES5新增加的一个方法——reduce() 高手给的,完美方法 let log ...

  5. Mac 开发使用中的小技巧收集

    1. mac 下ssh连接到 linux 服务器管理,同putty,无需第三方 Mac 下打开终端,输入: ssh 登录用户名@ip地址 如: ssh root@142.138.1.89 如有询问是否 ...

  6. 'DataVisualization' does not exist in the namespace 'System.Web.UI'一例解决办法

    之前项目是vs2010 aspx项目,用vs2017打开后,非运行状态下有一行错误:CS0234 C# The type or namespace name 'DataVisualization' d ...

  7. GCC编译器原理(一)------交叉编译器制作和GCC组件及命令

    1.1 交叉编译器制作 默认安装的 GCC 编译系统所产生的代码适用于本机,即运行 GCC 的机器,但也可将 GCC 安装成能够生成其他的机器代码.安装一些必须的模块,就可产生多种目标机器代码,而且可 ...

  8. 隐马尔可夫模型HMM(一)

    摘自 1.李航的<统计学习方法> 2.https://www.cnblogs.com/pinard/p/6945257.html 了解HMM模型 1.隐马尔可夫模型的定义 隐马尔可夫模型是 ...

  9. python函数后面有多个括号怎么理解?

    一般而言,函数后面只有一个括号.如果看见括号后还有一个括号,说明第一个函数返回了一个函数,如果后面还有括号,说明前面那个也返回了一个函数.以此类推. 比如fun()() def fun(): prin ...

  10. react-踩坑记录——页面底部多出一倍高度的空白

    挂载slider组件后页面底部多出一倍高度的空白,如下: slider组件内容⬇️: class Slider extends Component{ constructor(){ super(); } ...