Python2.7-copy
copy 模块,python 中的‘=’是使左边的对象成为右边对象的一个引用,对不可变对象(如数字,字符串等)使用‘=’一般不会出现问题,但当对字典,列表等可变对象进行‘=’操作时,要注意修改其中一个里面的元素后,另一个也会随之改变。当不希望发生这种情况时,可以使用此模块
copy.copy(x):浅拷贝,创建一个新对象,把原对象的每个元素的引用拷贝给新对象,即列表中的列表还是会随之改变,一定程度上是两个独立对象
copy.deepcopy(x):深拷贝,创建一个新对象,把原对象的每个元素的复制拷贝给新对象,即列表中的列表也不会随之改变,是完全独立的两个对象
python 中的‘=’:赋值和引用的结合体,即传值还是传引用是根据原对象决定的,不可变对象传引用其实等同于传值。所以可以认为都是传引用,每次传引用都会增加原对象的引用计数,不希望增加引用计数的话就需要使用 weakref 模块。
‘=’的调用会先创建右边对象的副本,再将副本的引用传给左边对象,再删除副本。而混合赋值如‘+=’直接修改原对象。
例子:
def add_list(p):
p = p + [1]
p1 = [1,2,3]
add_list(p1)
print p1
>>> [1, 2, 3]
def add_list(p):
p += [1]
p2 = [1,2,3]
proc2(p2)
print p2
>>>[1, 2, 3, 1]
参考:http://blog.csdn.net/stoneyyhit/article/details/52298786
Python2.7-copy的更多相关文章
- 由Python的浅拷贝(shallow copy)和深拷贝(deep copy)引发的思考
首先查看拷贝模块(copy)发现: >>> help(copy)Help on module copy:NAME copy - Generic (shallow and dee ...
- Storm On Docker
1. 安装Docker (1)确认系统版本 sudo lsb_release -a 注:如果提示找不到命令“lsb_release”,使用“yum install redhat-lsb ...
- HEC-ResSim原文档
HEC-ResSim Reservoir System Simulation User's Manual Version 3.1 May 201 ...
- Effective Python2 读书笔记1
Item 2: Follow the PEP 8 Style Guide Naming Naming functions, variables, attributes lowercase_unders ...
- centos python2.6 升级到 python2.7
一开始有这个需求,是因为用 YaH3C 替代 iNode 进行校园网认证时,一直编译错误,提示找不到 Python 的某个模块,百度了一下,此模块是在 Python2.7 以上才有的,但是系统的自带的 ...
- Python copy and deepcopy
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deep ...
- Python3字典中items()和python2.x中iteritems()有什么区别
在Python2.x中,items( )用于 返回一个字典的拷贝列表[Returns a copy of the list of all items (key/value pairs) in D],占 ...
- 【OpenCV】OpenCV2.4.6 与Visiual Studio 2008,Python2.7.5配置和图像载入显示
自从OpenCV2.2开始,OpenCV 库便分成几个模块并位于lib文件中,本节介绍从OpenCV2.4.6与VS2008 .Python2.7.5如何配置环境,如何外部文件载 入图像.在窗口中显示 ...
- CentOS升级Python2.7导致使用pip等命令安装模块失败
报错如下: # pip Traceback (most recent call last): File , in <module> from pkg_resources import lo ...
- 基于python2.7通过boto3实现ec2表格化
#!/usr/bin/env python import xlwt,xlrd,datetime,json,os,xlutils.copy a={ 'VpcPeeringConnection': { ' ...
随机推荐
- POJ2955(KB22-C 区间DP)
Brackets Time Limit: 1000MSMemory Limit: 65536K Total Submissions: 7823Accepted: 4151 Description We ...
- 100行代码实现现代版Router
原文:http://www.html-js.com/article/JavaScript-version-100-lines-of-code-to-achieve-a-modern-version ...
- 设计模式(17)--Mediator(中介者模式)行为型
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.模式定义: 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以 ...
- Atcoder:AGC004F Namori
传送门 先考虑树,树是一个二分图. 看到是二分图并且每次是对两边的同色的点反色可以想到转化:让奇数层的点为黑,偶数为白,变成每次可以交换两个点的颜色. 把黑看成 \(-1\),白看成 \(1\),那么 ...
- JS写的二级导航栏(利用冒泡原理)
今天给大家分享一种用JS写的导航栏,虽然我们工作中不会使用JS来做导航栏,为了练习我们用JS来做一个JS导航栏 这种方法要比其他方法代码量少很多,但是需要对事件冒泡有一定的理解,如果需要理解冒泡可以参 ...
- 让一个小div在另一个大div里面 垂直居中的四种方法
方法一 .parent { width:800px; height:500px; border:2px solid #000; position:relative; } .child { width: ...
- 浅谈http协议六种请求方法,get、head、put、delete、post、options区别
标准Http协议支持六种请求方法,即: 1.GET 2.POST 3.PUT 4.Delete 5.HEAD 6.Options 但其实我们大部分情况下只用到了GET和POST.如果想设计一个符合RE ...
- Android逆向 破解第一个Android程序
这节正式开始破解编写的第一个Android工程,打开Android Killer,把第一节自己编写的Android apk拖入Android Killer. PS: 如果Android Killer不 ...
- Android--WebView 自适应代码
//WebView自适应代码 private String getHtmlData(String bodyHTML) { String head = "<head>" ...
- 带你从零学ReactNative开发跨平台App开发(一)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...