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 ...
随机推荐
- Java 技术文章摘录
sokcet 编程实例 android bundle类 Android -- Looper.prepare()和Looper.loop() —深入版 Java NIO系列教程 XML操作 Androi ...
- [AIR] 获取U盘,打开U盘
示例: 获取存储卷的方法: package com.controls { import flash.events.StorageVolumeChangeEvent; import flash.file ...
- 使用nginx部署Yii 2.0\yii-advanced-app-2.0.6
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- ZYNQ学习之二-EMIO
---恢复内容开始--- 本次试验学习和掌握zynq的emio的使用,是通过PS控制PL端的GPIO. 1.创建硬件工程,主要就是添加EMIO就可以.当然了创建工程的时候还要注意DDR的设置,根据自己 ...
- 两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz
1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; public class EmailReportT ...
- 使用jenkins 插件自动部署项目至tomcat
前面使用maven.ant编译项目就不说,只说一下使用jenkins的插件自动部署项目 1.首先jenkins安装插件Deploy to container Plugin ,下载地址为:https:/ ...
- linux shell 常用表达式汇总
1. linux shell 逻辑运算符.逻辑表达式详解: http://www.cnblogs.com/chengmo/archive/2010/10/01/1839942.html
- asp.net js 跨域方法二
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="view ...
- Java web--Filter过滤器分IP统计访问次数
分IP统计访问次数即网站统计每个IP地址访问本网站的次数. 分析 因为一个网站可能有多个页面,无论哪个页面被访问,都要统计访问次数,所以使用过滤器最为方便. 因为需要分IP统计,所以可以在过滤器中创建 ...
- 初学Python之异步多线程:sockserver
异步多线程:服务端 import socketserver class MyServer(socketserver.BaseRequestHandler): def setup(self): pass ...