在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. 企业IT架构转型是大势所趋
  2. 【每日训练】2020/11/8(规律 + 二进制、单调栈 + 前缀和,后缀和、bitset + 枚举)
  3. 如何把导航条做成sitefactory政府版的样子实现动态读取子栏目显示
  4. 美国空军开发新型机载网络技术
  5. Hasor【付诸实践 01】低代码框架 DataQL 聚合查询引擎 SQL执行器报错 Query dialect missing 原因分析及解决(针对GreenPlum数据库)
  6. matlab求傅里叶级数展开式_简单粗暴傅里叶级数
  7. vb.net mysql存储图片_怎么让VB.NET 上传图片到SQL 数据库只保存路径,图片保存到文件...
  8. matlab 转换图片格式,Matlab实现图片格式转换 pgm转jpg等
  9. 如何在XenDesktop中映射USB设备
  10. 力扣每日一刷-144,二叉树前序遍历-递归解法
  11. php curl登录,php curl保存登录信息 模拟登录
  12. Jenkins使用经验谈
  13. 用什么软件测试钢结构受力,钢结构平台承载力检测
  14. Python 之 字典(dict)的创建、字典生成式、复制添加更新删除、查询遍历比较等
  15. st语言 数组的常用方法_三菱ST语言编程中常用的函数/功能块使用方法
  16. 【编解码】从零开始写H264解码器(1) 总纲
  17. 如何让芯烨打印机支持打印二维码
  18. 基于pygame的自定义游戏《the box》
  19. 小米商城前端页面(静态)
  20. 525、Java工程师的进阶之路 -【 RocketMQ (二)】 2022.01.06

热门文章

  1. 80x86汇编:将AL中的8位无符号数转换为压缩型BCD数放入AX
  2. 011-不知道名字并不妨碍我们买买买
  3. 【计算机毕业文章】垃圾分类系统设计与实现
  4. 24、PrepareStament
  5. GO功能注释-简单快速
  6. spring与jdk对应版本关系
  7. python计算机视觉编程——基于BOF的图像检索(附代码)
  8. 天合光能产品怎么样?新一代光储电站系统全球发布
  9. QWidgetAction
  10. 2021 CCCC天梯赛补题