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

__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. 8种提升ASP.NET Web API性能的方法

    英文原文:8 ways to improve ASP.NET Web API performance ASP.NET Web API 是非常棒的技术.编写 Web API 十分容易,以致于很多开发者没 ...

  2. 阅读:ECMAScript 6 入门(2)

    参考 ECMAScript 6 入门 ES6新特性概览 ES6 全套教程 ECMAScript6 (原著:阮一峰) JavaScript 教程 重新介绍 JavaScript(JS 教程) Modul ...

  3. spring拦截器中修改响应消息头

    问题描述 前后端分离的项目,前端使用Vue,后端使用Spring MVC. 显然,需要解决浏览器跨域访问数据限制的问题,在此使用CROS协议解决. 由于该项目我在中期加入的,主要负责集成shiro框架 ...

  4. error.c

    #include <stdio.h> #include <errno.h> #include <stdlib.h> #include <string.h> ...

  5. Continuous Design

    Continuous Design https://www.martinfowler.com/ieeeSoftware/continuousDesign.pdf T he rising popular ...

  6. Intelij IDEA 内置 sql gui

    IDEA 内置 自带 SQL GUI  最大意义 会自动识别 domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 domain 对象等等. 第一步 打开数据库视图 Vie ...

  7. 【bzoj 4756】[Usaco2017 Jan] Promotion Counting

    Description The cows have once again tried to form a startup company, failing to remember from past ...

  8. JVM学习(一)简介

    一.java程序编译到运行大概流程 1.Source Code Files为.java文件 2.通过编译产生可执行的字节码. 3.通过jvm得到机器可以执行的机器码 4.操作系统运行机器码,并与硬件进 ...

  9. APPLE-SA-2019-3-25-2 macOS Mojave 10.14.4,Security Update 2019-002 High Sierra, Security Update 2019-002 Sierra

    APPLE-SA-2019-3-25-2 macOS Mojave 10.14.4, Security Update2019-002 High Sierra, Security Update 2019 ...

  10. JDK自带的LinkedHashMap来实现LRU算法

    1 代码如下 public class LRULinkedHashMap<K, V> extends LinkedHashMap<K, V> { private final i ...