python开发_copy(浅拷贝|深拷贝)_博主推荐
下面我们就来聊一下:
运行效果:
==================================================
代码部分:
==================================================
#python copy
'''
个人认为:
浅拷贝:拷贝后,对象的引用没有发生变化,而对象的行为发生变化,会反映到拷贝后的对象身上
深拷贝:拷贝后,对象的引用发生了变化,即对象不同,所以,即使对象再怎么变,也不会对其他对象产生影响
''' import copy def shallow_copy(s):
'''make a shallow copy of s.'''
return copy.copy(s) def deep_copy(d):
'''make a deep copy of d.'''
return copy.deepcopy(d) def test_shallow():
tem_data = ['a', 'c', 'e', 't', [1, 2, 3]]
print('被拷贝的源数据为:{}'.format(tem_data))
s_copy = shallow_copy(tem_data)
print('进行浅拷贝....')
tem_data.append('Hongten')
tem_data[4].append('')
print('修改源数据后:{}'.format(tem_data))
print('拷贝后的数据为:{}'.format(s_copy)) def test_deep():
tem_data = ['a', 'c', 'e', 't', [1, 2, 3]]
print('被拷贝的源数据为:{}'.format(tem_data))
s_copy = deep_copy(tem_data)
print('进行深拷贝....')
tem_data.append('Hongten')
tem_data[4].append('')
print('修改源数据后:{}'.format(tem_data))
print('拷贝后的数据为:{}'.format(s_copy)) def test_s_copy():
'''listB复制了listA,这时候listB是对listA的一个引用
他们指向的是同一个对象:[1, 2, 3, 4, 5],当我们试图修
改listB[1] = 'Hongten'的时候,listB的所指向的对象的
行为发生了变化,即元素的值发生了变化,但是他们的引用是没
有变化的,所以listA[1] = 'Hongten'也是情理之中的事'''
listA = [1, 2, 3, 4, 5]
listB = listA
listB[1] = 'Hongten'
print('listA = {}, listB = {}'.format(listA, listB)) def test_clone():
'''进行了列表的克隆操作,即拷贝了另一个列表,这样的操作,
会创造出新的一个列表对象,使得listA和listB指向不同的对象,
就有着不同的引用,所以当listB[1] = 'Hongten'的时候,
listA[1]还是等于2,即不变'''
listA = [1, 2, 3, 4, 5]
listB = listA[:]
listB[1] = 'Hongten'
print('listA = {}, listB = {}'.format(listA, listB)) def main():
print('浅拷贝Demo')
test_shallow()
print('#' * 50)
print('深拷贝Demo')
test_deep()
print('#' * 50)
test_s_copy()
print('#' * 50)
test_clone() if __name__ == '__main__':
main()
python开发_copy(浅拷贝|深拷贝)_博主推荐的更多相关文章
- python开发_sqlite3_绝对完整_博主推荐
'''SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说 没有独立的维护进程,所有的维护都来自于程序本身. 在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不 ...
- python开发_zlib_完整版_博主推荐
''' python中的zlib模块提供了压缩和解压缩的方法 实现功能: 读取一个文件的内容,然后把该文件的内容以字符串的形式返回 然后对返回回来的字符串进行压缩处理,然后写入到另一个文件中 同时,也 ...
- python开发_shelve_完整版_博主推荐
''' python中的shelve模块,可以提供一些简单的数据操作 他和python中的dbm很相似. 区别如下: 都是以键值对的形式保存数据,不过在shelve模块中, key必须为字符串,而值可 ...
- python开发_tkinter_菜单选项中英文切换_菜单选项不可用操作_博主推荐
我使用的python版本为:3.3.2 如果你对python中tkinter模块的菜单操作不是很了解,你可以看看: python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推 ...
- python开发_xml.dom_解析XML文档_完整版_博主推荐
在阅读之前,你需要了解一些xml.dom的一些理论知识,在这里你可以对xml.dom有一定的了解,如果你阅读完之后. 下面是我做的demo 运行效果: 解析的XML文件位置:c:\\test\\hon ...
- python开发_configparser_解析.ini配置文件工具_完整版_博主推荐
# # 最近出了一趟差,是从20号去的,今天回来... # 就把最近学习的python内容给大家分享一下... # ''' 在python中,configparser模块提供了操作*.ini配置文件的 ...
- python开发_csv(Comma Separated Values)_逗号分隔值_常用导入导出格式_完整版_博主推荐
## 最近出了一趟差,是从20号去的,今天回来...# 就把最近学习的python内容给大家分享一下...#''' 在python中,CSV(Comma Separated Values),从字面上面 ...
- python开发_gzip_压缩|解压缩gz文件_完整版_博主推荐
''' gzip -- 支持gzip文件 源文件:Lib/gzip.py 这个模块提供了一些简单的接口来对文件进行压缩和解压缩,类似于GNU项目的gzip和gunzip. 数据的压缩源于zlib模块的 ...
- python开发_dbm_键值对存储_完整_博主推荐
''' 在python的应用程序中,不需要关系型数据库时,如MySQL 可以使用python提供的持久字典dbm来存储名称和值(键值对) 这个类似于java的中的java.util.Map对象. 区别 ...
随机推荐
- Go Web 编程 第一章 Web相关概念
第一章 Go与Web应用 Go学习群:415660935 1.1 Web应用 在计算机的世界里,应用(application)是一个与用户进行交互,并完成用户特定任务的软件程序.而Web应用则是部署在 ...
- webgote的例子(2)Sql注入(SearchGET)
Sql注入(Search/GET) 大家好!!! 现如今web服务在我们的网络上遍地都是,各个终端设备成为我们看不见的客户,web服务也成为公司的招牌.80 443为我们展现的视角也是多姿多彩但背后新 ...
- 《STL源码剖析》读书笔记
转载:https://www.cnblogs.com/xiaoyi115/p/3721922.html 直接逼入正题. Standard Template Library简称STL.STL可分为容器( ...
- ../include/squid_md5.h:27:2: error: #error Cannot find OpenSSL MD5 headers【squid安装中】
../include/squid_md5.h:27:2: error: #error Cannot find OpenSSL MD5 headers yum install -y openssl* w ...
- u-boot启动第二阶段以及界面命令分析
u-boot第一阶段完成了一些平台相关的硬件的配置,第一阶段所做的事情也是为第二阶段的准备,我们知道在第一阶段最后时搭建好C运行环境,之后调用了start_armboot(),那么很显然第二阶段从st ...
- 关于VS2010的一些操作
自动插入接口实现 1: class MyClass : IMyInterface 2: { 3: 4: } .csharpcode, .csharpcode pre { font-size: sm ...
- csu 1749: Soldiers ' Training(贪心)
1749: Soldiers ' Training Time Limit: 1 Sec Memory Limit: 512 MBSubmit: 37 Solved: 18[Submit][Stat ...
- [Linux][Ubuntu18.04.1] nginx+php+MySQL环境搭建
说在前面 今天在腾讯云的CVM服务器搭建了一下环境[主机:标准型S2,Unbuntu18.04的LST版本] 采用了nginx服务器(Nginx 静态处理性能比 Apache高3倍以上,不过apach ...
- 使用亚马逊云服务器EC2做深度学习(二)配置Jupyter Notebook服务器
这是<使用亚马逊云服务器EC2做深度学习>系列的第二篇文章. (一)申请竞价实例 (二)配置Jupyter Notebook服务器 (三)配置TensorFlow (四)配置好的系统 ...
- Yii2使用驼峰命名的形式访问控制器
yii2在使用的时候,访问控制器的时候,如果控制器的名称是驼峰命名法,那访问的url中要改成横线的形式.例如: public function actionRoomUpdate() { // }//访 ...