6.20节

copy实施方式:

(1)完全切片操作[:]

(2)工厂函数list(),tuple()等

(3)copy模块的copy函数

copy可以说是创建了了一个新的对象,但是内容仍然是原对象的引用。如果对其中含有的可变对象进行原地修改,copy后创建的新对象也会进行相应的修改。

比如代码:

<pre name="code" class="plain"><pre name="code" class="plain">>>> person = ['name', ['savings', 100.00]]
>>> hubby = person[:]
>>> wifey = list(person)
>>> [id(x) for x in person, hubby, wifey]
[36496136L, 36497544L, 32167496L] # person, hubby, wifey<span style="font-family: Arial, Helvetica, sans-serif;">是不同的对象</span>

>>> hubby[0] = 'joe'>>> wifey[0] = 'jane'>>> hubby, wifey(['joe', ['savings', 100.00]], ['jane', ['savings', 100.00]])>>> hubby[1][1] = 50>>> hubby, wifey(['joe', ['savings', 50.00]], ['jane', ['savings', 50.00]]) 在列表内,第二个元素是列表,但是在copy的过程中,只是复制了其内对象的引用,所以在对其内对象的原地修改,会导致copy后的对象也发生改变。

deepcopy实施方式是copy模块中的deepcopy()函数。

比如代码:

>>> person = ['name', ['savings', 100.00]]
>>> hubby = person
>>> import copy
>>> wifey = copy.deepcopy(person)
>>> [id(x) for x in person, hubby, wifey]
[36496136L, 36497544L, 36508616L]
>>> hubby[0] = 'joe'
>>> wifey[0] = 'jane'
>>> hubby, wifey
(['joe', ['savings', 100.00]], ['jane', ['savings', 100.00]])
>>> hubby[1][1] = 50
>>> hubby, wifey
(['joe', ['savings', 50.00]], ['jane', ['savings', 100.00]])

不同于copy,对于作为元素的列表,在deepcopy的过程中,不再是复制对象的引用,而是创建新的对象。所以即便是修改原对象,复制后的对象也不会发生改变。

Python核心编程学习笔记-2016-07-24-01-理解copy和deepcopy相关推荐

  1. Python核心编程学习笔记(一)

    1.把一个字符串赋值给变量str.先用print来显示变量的内容,然后用变量名称来显示: >>>str = 'Hello World!' >>>print str ...

  2. python起步输入-[转载]python核心编程学习笔记-python起步

    python通过两种方式来实现你的需求:语句和表达式 语句:使用关键字组成命令 >>> print 'Hello wolrd!' Hello wolrd! 表达式:可以是算术表达式或 ...

  3. 大数据第二阶段Python基础编程学习笔记(待完善)

    大数据第二阶段Python基础编程学习笔记(待完善) 第一章 Python基础语法 3.8 1-1Python概述 python基础部分: ●Python基础语法: 标识符,关键字,变量,判断循环.. ...

  4. python核心装饰_《python核心编程》中高级闭包和装饰器理解?

    1.<python核心编程>的这段程序怎么理解?对于这个函数,书上说两个wraaped是闭包,但是不知道谁是自由变量. 2.代码: from time import time def lo ...

  5. python网络编程学习笔记(二)

    python网络编程学习(四) 多用途客户端协议 一.ftp 功能:上传下载文件,删除命名文件,建立删除目录,自动压缩,保存目录 1.代码: #coding=utf-8 '''连接远程ftp服务器,显 ...

  6. 【C++】黑马程序员-C++核心编程学习笔记

    前言 根据黑马程序员C++课程内容,结合讲义,将自己学习C++的过程中将自己觉得有必要记下的笔记进行整理,方便复习回顾,编程环境为VSCode. 本阶段主要针对C++面向对象编程技术做详细讲解,探讨C ...

  7. python网络编程需要学什么,python网络编程学习笔记(五):socket的一些补充 Python 网络编程需要学习哪些网络相关的知识...

    python的socket编程问题hdr = recvall(s, 5) if hdr is None: print 'Unexpected EOF receivingstruct在unpack的时候 ...

  8. 转 windows核心编程 学习笔记 目录

    windows核心编程--SEH(结构异常处理) SEH 的工作原理.         Windows 程序设计中最重要的理念就是消息传递,事件驱动.当GUI应用程序触发一个消息时,系统将把该消息放入 ...

  9. Python 网络编程学习笔记(二)——DNS 域名解析客户端程序设计

    本博文介绍如何使用 Python 网络编程,设计并实现客户端的 DNS 域名解析及缓存服务. 1 基本概念 域名系统(DNS)是一个庞大的.全球的分布式数据库,,它主要用来把主机名转换成 IP 地址, ...

最新文章

  1. Git 常用操作(2)- 创建标签
  2. 为什么要选择html5,5分钟告诉你,为什么要学HTML5大前端
  3. vue.js+socket.io打造一个好玩的新闻社区
  4. PHP 验证码   高洛峰 细说PHP
  5. mysql语句中%代表什么_常用的Mysql语句你知道多少?
  6. java 文件缓冲区_Java开发笔记(八十六)通过缓冲区读写文件
  7. intellij idea中解决java.lang.VerifyError: Expecting a stackmap frame at branch target的方法
  8. pjsua帮助手册(中文)
  9. oracle海量数据中提升创建索引的速度
  10. 设计师 VR 成型设计知识收集
  11. python自动化是什么意思_浅谈 Python 自动化
  12. Pythonblog_henry_dx_新浪博客
  13. Android 房贷计算
  14. PHP与MySQL交互实现网页登录注册功能(步骤超详细!!!)
  15. mysqlfrm 解析mysql frm文件 彻底解决phpmyadmin 管理表 “使用中”问题
  16. LeetCode 1665. 完成所有任务的最少初始能量
  17. 软件工程 个人学习笔记(第二章)
  18. 2021年电工(初级)考试题库及电工(初级)考试内容
  19. Hive中Floor函数精度计算问题
  20. App怎么推广最有效

热门文章

  1. Android自定义View实现喜马拉雅播放状态切换
  2. 拼多多API接口详情,item_get-根据ID取商品详情
  3. Kubernetes准入控制器指南
  4. 450g吐司烘烤温度_柔软漂亮的吐司,烘烤时间和温度不容忽视,配方揉面发酵也是重点...
  5. Vue绑定事件,双向数据绑定,只是循环没那么简单
  6. PART 5 多为数据透视分析
  7. 覆盖5大任务,30+特色模型,高性能、全流程开发套件PaddleRS助力遥感影像智能解译化繁为简...
  8. ng-switch指令
  9. 维克房地产中介管理软件 v2.62 个人版 下载
  10. 【HTML 教程系列第 12 篇】什么是 HTML 中的 div 标签