copy(python中的引用,浅拷贝,深拷贝)
#直接赋值
list = [1,2,['a','b'],'python']
#现将a等于list
a = list
print a
[1,2,['a','b'],'python']
list.append(5)
print list
[1,2,['a','b'],'python',5]
print a
[1,2,['a','b'],'python',5]
#直接赋值其实是传递对象的引用,原始列表改变,被赋值的a也会做相同的改变。#如果需要拷贝对象,需要使用标准库中的copy模块。
import copy
# copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
list = [1,2,['a','b'],'python']
#b浅拷贝了list
b = copy.copy(list)
list[3] = 'java'
print list
[1, 2, ['a', 'b'], 'java']
print b
[1, 2, ['a', 'b'], 'python']
#是的b没有改变因为整个列表是父级的,我来修改一个子级的:
list[2][0] = 'A'
print list
[1, 2, ['A', 'b'], 'java']
print b
[1, 2, ['A', 'b'], 'python']
#修改成功。#深拷贝,拷贝父对象和子对象
c = copy.deepcopy(list) list[0]=3 print list
[3, 2, ['A', 'b'], 'java'] print c
[1, 2, ['A', 'b'], 'java']
#修改子对象
list[2][1] = 'B' print list
[3, 2, ['A', 'B'], 'java'] print c
[1, 2, ['A', 'b'], 'java']
#所有对象都拷贝,所以在改动源对象时,深拷贝的对象是无法改变的
copy(python中的引用,浅拷贝,深拷贝)的更多相关文章
- python 中的 赋值 浅拷贝 深拷贝
1.对象的赋值 都是进行对象引用(内存地址)传递,即 b is a ,a 变 b也变 2.浅拷贝 会创建一个新的对象,对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址) 当我们使用下面的操作 ...
- Python中的赋值、深拷贝与浅拷贝(内存地址)
Python中的赋值.深拷贝与浅拷贝(内存地址) 1.python中的可变对象与不可变对象 (1) 可变对象:dict,list def dict_test(): a = {} b = a print ...
- Python__学习路上的坑之--引用,浅拷贝,深拷贝
copy : 相当于只是拷贝表面一层,如果里面还有深层次的引用,那么也是直接拷贝引用的地址,而且如果拷贝对象是不可变类型比如元组,那么也是直接拷贝引用. deepcopy: 无论是拷贝可变类型还是不可 ...
- python中的引用
作为一个python初学者,今天被一个python列表和词典引用的问题折磨了很久,但其实了解了缘由也很简单,记录在此备忘. 首先背书python中的引用对象问题: 1. python不允许程序员选择采 ...
- Python中的引用的使用注意
关于Python中的引用的一些使用注意 在python中,在创建一个对象并给它赋予一个变量时,这个赋予的变量仅仅是一个引用它所代表的对象.也就是说新创建的对象只是指向计算机中储存那个对象的内存. 比如 ...
- 非常易于理解‘类'与'对象’ 间 属性 引用关系,暨《Python 中的引用和类属性的初步理解》读后感
关键字:名称,名称空间,引用,指针,指针类型的指针(即指向指针的指针) 我读完后的理解总结: 1. 我们知道,python中的变量的赋值操作,变量其实就是一个名称name,赋值就是将name引用到一个 ...
- python中的引用传递,可变对象,不可变对象,list注意点
python中的引用传递 首先必须理解的是,python中一切的传递都是引用(地址),无论是赋值还是函数调用,不存在值传递. 可变对象和不可变对象 python变量保存的是对象的引用,这个引用指向堆内 ...
- 图解python中赋值、浅拷贝、深拷贝的区别
Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果.下面本文就通过简单的例子介绍一下这些概念之间的差别. 对象赋值 直接看一段代码: will = ...
- Python中赋值、浅拷贝与深拷贝
python中关于对象复制有三种类型的使用方式,赋值.浅拷贝与深拷贝.他们既有区别又有联系,刚好最近碰到这一类的问题,研究下. 一.赋值 在python中,对象的赋值就是简单的对象引用,这点和C++不 ...
- python中赋值、浅拷贝、深拷贝详解(转)
一.赋值 >>> a = [1, 2, 3]>>> b = a>>> print(id(a), id(b), sep='\n')139701469 ...
随机推荐
- Jmeter测试数据库
1.创建线程组 2.右键 Thread Group -> add ConfigElement -> JDBC Connection Configuration创建一个JDBC配置 (这有个 ...
- phpstrom 10 激活
随着 JetBrains 新版本的发布,注册机已然不行了.然而,道高一尺,魔高一丈.IntelliJ IDEA开源社区 提供了如下通用激活方法:注册时选择License server填写http:// ...
- Audio 的一些小笔记
1.在做项目的过程中,对于volume 我们有一个volume curve,就是 0~63 step,每个step对应一个dB值,例如0step对应-90dB, 63 step对应0dB.关于这个0d ...
- java.lang.ArrayIndexOutOfBoundsException: 1
数组越界 但是我这个也不是这个原因: 在CuiShouDetail.jsp 里,如果 添加上 QiTaDianHua,如果为空就会报错,别的都么有问题null,或者是空格,或者是有数据 1. Stri ...
- 关于32位windows与4GB内存的那些事儿
参考:1 Physical Address Extensionzh.wikipedia.org/wiki/PAEen.wikipedia.org/wiki/Physical_Address_Exten ...
- Retina Display and Eclipse Mac视网膜屏和Eclipse
I have a Retina Display and Eclipse looks blurry. How can I fix it? You need to tell Mac OS that Ecl ...
- [Fraud] China UnionPay defrauded in Macau money laundering scandal
Source: http://www.wantchinatimes.com/news-subclass-cnt.aspx?id=20140510000005&cid=1103 China Un ...
- Shell中取得文件的最后修改时间
stat -c %y file 取得修改日期 -,-,-
- how to enable remote access for root user
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
- 带有静态方法的类(java中的math类)
带有静态方法的类通常(虽然不一定是这样)不打算被初始化. 可以用私有构造函数来限制非抽象类被初始化. 例如,java中的math类.它让构造函数标记为私有,所以你无法创建Math的实例.但Math类却 ...