# 1.浅拷贝(复制东西)
a = [11,22,33]

# 实际上是浅拷贝
# 没有把这个变量的值赋进去,而是把另一个变量的地址拿过去了,就叫浅拷贝。
b = a

# print(id(a))
# print(id(b))

# 什么是深拷贝
import copy
c = copy.deepcopy(a) # 深拷贝

print(id(a))
print(id(c))

a.append(44)
print(a)
print(b)
print(c)

# 深拷贝和浅拷贝
aa = [11,22,33]
bb = [44,55,66]

c = [a,b]

# deepcopy深度识别

'''
>>> a = [11,22,33]
>>> b = [44,55,66]
>>> c = [a,b]
>>> c
[[11, 22, 33], [44, 55, 66]]
>>> d = c
>>> d
[[11, 22, 33], [44, 55, 66]]
>>> id(d)
2711060056904
>>> id(c)
2711060056904
>>> import copy
>>> e = copy.deepcopy(c)
>>> id(e)
2711060078984
>>> id(e[0])
2711060056968
>>> id(a)
2711060055432
>>> a.append(44)
>>> e
[[11, 22, 33], [44, 55, 66]]
>>> c
[[11, 22, 33, 44], [44, 55, 66]]
>>>
'''

# 对于列表
# copy.copy copy只能识别第一层
'''
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [a,b]
>>> e = copy.copy(c)
>>> e
[[1, 2, 3], [4, 5, 6]]
>>> a.append(4)
>>> e
[[1, 2, 3, 4], [4, 5, 6]]
>>> c
[[1, 2, 3, 4], [4, 5, 6]]
>>>
'''

# 对于元组

# copy.copy 如果是不可变类型,就不深拷贝,如果是可变类型,就只能拷贝一层
# >>> a = [1,2,3]
# >>> b = [4,5,6]
# >>> c = (a,b)
# >>> e = copy.copy(c)
# >>> id(c)
# 2711060057352
# >>> id(e)
# 2711060057352
# >>>

# 使用copy模块的copy会根据当前的拷贝的数据类型是可变类型还是不可变类型存在的不同的处理方式

python中深拷贝与浅拷贝的更多相关文章

  1. python 中 深拷贝和浅拷贝的理解

    在总结 python 对象和引用的时候,想到其实 对于python的深拷贝和浅拷贝也可以很好对其的进行理解. 在python中,对象的赋值的其实就是对象的引用.也就是说,当创建一个对象,然后赋给另外一 ...

  2. python中深拷贝和浅拷贝

    python中所谓浅拷贝就是对引用的拷贝,所谓深拷贝就是对对象的资源的拷贝. 首先,对赋值操作我们要有以下认识: 赋值是将一个对象的地址赋值给一个变量,让变量指向该地址( 旧瓶装旧酒 ). 修改不可变 ...

  3. Python中深拷贝与浅拷贝的区别

    转自:http://blog.csdn.net/u014745194/article/details/70271868 定义: 在Python中对象的赋值其实就是对象的引用.当创建一个对象,把它赋值给 ...

  4. python 中深拷贝和浅拷贝的区别

    通俗的理解,浅就是外面,深就是里面.浅拷贝的意思就是只拷贝外面的一层,深拷贝就是拷贝的里面的所有. 看两段代码: 元组: #!/usr/bin/env/python # -*-coding:utf-8 ...

  5. 关于Python中深拷贝与浅拷贝的理解(一)---概念

    import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷贝 d = copy. ...

  6. Python中深拷贝与浅拷贝区别

    浅拷贝, list值是可变的,str值不可变,只能重新赋值 a=b=c='wjx'print(a,b,c)c= 'jmy'#重新赋值了,所以内存分配了新的地址print(a,b,c)print(id( ...

  7. 关于python中赋值、浅拷贝、深拷贝之间区别的深入分析

    当重新学习了计算机基础课程<数据结构和算法分析>后再来看这篇自己以前写的博文,发现错误百出.python内置数据类型之所以会有这些特性,归根结底是它采用的是传递内存地址的方式,而不是传递真 ...

  8. 图解python中赋值、浅拷贝、深拷贝的区别

    Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果.下面本文就通过简单的例子介绍一下这些概念之间的差别. 对象赋值 直接看一段代码: will = ...

  9. Python中赋值、浅拷贝与深拷贝

    python中关于对象复制有三种类型的使用方式,赋值.浅拷贝与深拷贝.他们既有区别又有联系,刚好最近碰到这一类的问题,研究下. 一.赋值 在python中,对象的赋值就是简单的对象引用,这点和C++不 ...

随机推荐

  1. 【转】实习小记-python 内置函数__eq__函数引发的探索

    [转]实习小记-python 内置函数__eq__函数引发的探索 乱写__eq__会发生啥?请看代码.. >>> class A: ... def __eq__(self, othe ...

  2. Python3-socket网络知识储备

    本文参考文章:http://www.cnblogs.com/linhaifeng/articles/6129246.html 计算机基础知识 客户端软件基于网络发送一条信息给服务端软件,流程是: 1. ...

  3. Awk 命令学习总结、AWk命令系列学习(linux shell)

    AWK基本语法 下面没有提到awk命令怎么使用了,你可以通过 运行:awk –h 查询到所有命令及参数!下面把awk作为一门语言分节介绍. linux awk 内置变量使用介绍   awk语言中,怎么 ...

  4. hibernate框架学习之核心API

    ConfigurationSessionFactorySessionTransactionQueryCriteria Configuration Configuration对象用于封装Hibernat ...

  5. Zabbix3.0.4监控Windows的CPU使用百分比并在CPU使用率超过90%触发报警

    Zabbix3.0.4监控Windows的CPU使用百分比 Zabbix 自带的模块没有 CPU 使用率(百分比)这个监控项,我们可以通过添加计数器的方式实现 CPU 百分比的监控. 1.在Zabbi ...

  6. mybatis:访问静态变量或方法

    访问方法: <if test="@com.csget.constant.ConstantApp@getUser('mobile')== 'kf'"> <![CDA ...

  7. MVC5访问SQL Server数据库

    参考: MVC5+EF6简单实例---以原有SQLServer数据库两表联合查询为例 1.新建MVC项目: 新建基于MVC5的项目,命名为PracticeProject 2.Models文件夹(右击) ...

  8. 前端 ----js的事件流的概念(重要)

    09-JS的事件流的概念(重点)   在学习jQuery的事件之前,大家必须要对JS的事件有所了解.看下文 事件的概念 HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件.页 ...

  9. 洛谷P4630 [APIO2018]铁人两项 [广义圆方树]

    传送门 又学会了一个新东西好开心呢~ 思路 显然,假如枚举了起始点\(x\)和终止点\(y\),中转点就必须在它们之间的简单路径上. 不知为何想到了圆方树,可以发现,如果把方点的权值记为双联通分量的大 ...

  10. flex下部固定高,上部不固定,而且超过内容要滚动

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...