在Python中,无论是对象赋值,作为为参数传递,作为函数返回值,都是引用传递的.如果需要拷贝对象,需要使用标准库中的copy模块(import copy)。

1.浅拷贝 :

使用copy.copy,它可以进行对象的浅拷贝(shallow copy),它复制了对象,但对于对象中的元素,依然使用引用(换句话说修改拷贝对象元素,则被拷贝对象元素也被修改)

2.深拷贝 :

使用copy.deepcopy,它可以进行深拷贝,不仅拷贝了对象,同时也拷贝了对象中的元素,获得了全新的对象,与被拷贝对象完全独立,但这需要牺牲一定的时间和空间。

3.特殊拷贝:

如要复制列表L,使用list(L),要复制一个字典d,使用dict(d),要复制一个集合s,使用set(s)。

总结一下的话:如果你要复制某个对象object, 它属于python内建的类型type,那么你可以使用type(object)来 获得一个拷贝。

4 举例:

import copy

list = [1, 2, 3, 4, ['a', 'b']]  #原始对象

b = list  #赋值,传对象的引用,依然指向list

c = copy.copy(list)  #对象拷贝,浅拷贝(元素依然是共享的引用)

d = copy.deepcopy(list)  #对象拷贝,深拷贝

list.append(5)  #修改对象list

list[4].append('c')  #修改对象list中的['a', 'b']数组对象

print 'list = ', list

print 'b = ', b

print 'c = ', c

print 'd = ', d

输出结果:

list =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]

b =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]

c =  [1, 2, 3, 4, ['a', 'b', 'c']]

d =  [1, 2, 3, 4, ['a', 'b']]

python中如何拷贝一个对象_python题目-----Python里面如何拷贝一个对象?相关推荐

  1. python中的文件处理_python学习——python中的文件处理

    python对文件的处理. python对文件的处理的两个内建函数: open().file(),这个两函数提供了初始化输入\输出(I\O)操作的通用接口.两函数的功能相同. 基本用法: file_o ...

  2. python中from import用法_python学习--Python之import与from...import的区别与用法

    Python编码第一步是导入模块,有时候用import ***有时候用from...import,它们有什么区别呢,请看实例A/B: A: 1.当模块test.py中没有类,只有方法add,此方法实现 ...

  3. 在python中模块可以封装_python 制作python包,封装成可用模块教程

    首先编写py程序: printtest.py def test(): print('print test') 将以上.py文件做成python模块,需要在相同目录下创建setup.py文件,setup ...

  4. python中的元类_Python中的元类(metaclass)

    提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自身有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理 ...

  5. python中strip的用法_Python中你不知道的strip()函数的妙用

    [开胃小菜] 当提到python中strip方法,想必凡接触过python的同行都知道它主要用来切除空格.有以下两种方法来实现. 方法一:用内置函数if name == 'main' : str = ...

  6. python中csv文件操作_python中操作csv文件

    python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...

  7. python中变量怎么定义_python中的变量的使用定义以及使用规则

    本篇包括14章内容,系统介绍了Python语言的基础知识.内容包括Python基础语法.数据类型和类型转换.运算符.流程控制(分支结构循环结构).数据结构(列表生成式).函数的定义及使用.异常处理.迭 ...

  8. python中占位符包括_python中占位符

    python如何在一个字符串中使用两个占位符 1. 使用连接符: + 12 world = "World"print "Hello " + world + &q ...

  9. python中list的意思_python中的list是什么

    python中的list是什么? Python 列表(List) 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. ...

最新文章

  1. iOS:quartz2D绘图(给图形绘制阴影)
  2. 龙岗网络推广浅析更新频率对网站优化有哪些影响?
  3. dailykt爬取tushare 数据存入本地mysql
  4. Gluon.vision的几类数据集
  5. python mysqldb安装_解决centos7 安装MySQLdb-python 报错 方案
  6. checkbox 实例
  7. Socket API: I/O函数recvmsg()与sendmsg()
  8. 如何排查mysql数据乱码_如何解决MYSQL数据库中文乱码问题?
  9. Liferay7 BPM门户开发之38: OSGi模块化Bndtools、Maven、Gradle开发构建入门
  10. Atitit mybatis快速开发 的sql api接口
  11. 乐高机器人巡线C语言程序,乐高机器人巡线原理.doc
  12. 计算机键盘上fn键,键盘上的fn键有什么用?笔记本电脑键盘上的fn键作用大全
  13. 业务部门战略规划与支撑部门战略规划
  14. ubuntu 20.04 耳机没有声音
  15. 润乾报表数据集中参数和宏的使用方法
  16. 安卓webview和h5交互
  17. 为什么梦幻西游服务器名字有显示但是区名字没有了,梦幻西游:三月份的第一个新区注定要变鬼,从名字就能看得出来...
  18. 采药问题 c语言程序,采药问题为什么不能ac(内附代码)
  19. 银联在线支付对接流程以及签名算法
  20. “新恒大”的几个“万亿未来”

热门文章

  1. CSS横向滚动条自定义样式
  2. 通俗易懂的拜耳阵列(拜耳马赛克)简介
  3. 微信支付之JSAPI支付开发流程
  4. 记录-css实现交融文字效果
  5. sql数据库中修改列名的方法
  6. Android WIFI architecture
  7. r语言kendall协和系数_R语言-相关系数计算(一)
  8. 对企业来说,为什么客户服务尤其重要?
  9. 可编程电源输出过冲怎么办?解决方案在这里
  10. Es6扩展运算符(...)的使用