python模块之copy

提供浅拷贝和深拷贝两种模式。

=>copy(x):返回x的浅拷贝

=>deepcopy(x):返回x的深拷贝

浅拷贝和深拷贝:

浅拷贝复制不变对象,引用可变对象(如列表和字典);

深拷贝复制可变和不可变对象。

浅拷贝的几种方法:

(1)、使用切片[:]操作进行拷贝

(2)、使用工厂函数(如list/dir/set)等进行拷贝

(3)、copy.copy()

Example:

#深拷贝浅拷贝

import copy

person = [1,2,4,[‘a‘,‘b‘]]

b = person  #对象的赋值实际上是对象的引用

c=person[:]

d=copy.copy(person)

e=copy.deepcopy(person)

person.append(‘hello‘)

b[3].insert(1,‘bbb‘)

b.insert(1,‘bbb‘)

c.insert(1,‘ccc‘)

c[4].insert(1,‘ccc‘)

d.insert(1,‘ddd‘)

e.insert(1,‘test‘)

print(‘原始数据person:\t‘,person)

print(‘赋值b:\t‘,b)

print(‘浅拷贝c:\t‘,c)

print(‘浅拷贝d:\t‘,d)

print(‘深拷贝e:\t‘,e)

原始数据person:  [1, ‘bbb‘, 2, 4, [‘a‘, ‘ccc‘, ‘bbb‘, ‘b‘], ‘hello‘]

赋值b:  [1, ‘bbb‘, 2, 4, [‘a‘, ‘ccc‘, ‘bbb‘, ‘b‘], ‘hello‘]

浅拷贝c:  [1, ‘ccc‘, 2, 4, [‘a‘, ‘ccc‘, ‘bbb‘, ‘b‘]]

浅拷贝d:  [1, ‘ddd‘, 2, 4, [‘a‘, ‘ccc‘, ‘bbb‘, ‘b‘]]

深拷贝e:  [1, ‘test‘, 2, 4, [‘a‘, ‘b‘]]

时间: 2024-08-01 22:44:09

python模块之copy的相关文章

转载:python中的copy模块(浅复制和深复制)

主要是介绍python中的copy模块. copy模块包括创建复合对象(包括列表.元组.字典和用户定义对象的实例)的深浅复制的函数. ########copy(x)########创建新的复合对象并通过引用复制x的成员来创建x的浅复制.更加深层次说,它复制了对象,但对于对象中的元素,依然使用引用.对于内置类型,此函数并不经常使用.而是使用诸如list(x), dict(x), set(x)等调用方式来创建x的浅复制,要知道像这样直接使用类型名显然比使用copy()快很多.但是它们达到的效果是一样

python 学习第五天,python模块

一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py结尾的python文件(文件名:test.py,对应的模块名:test) (2)包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py文件) 2,导入的方法 (1)import module_name导入某个模块 (2)import module_name,module2_

如何安装python模块

在python编程语言中,我们一般会用到python模块,如chardet.pygame,这些模块不包含在python的默认代码中,需要从外部下载并安装.有些模块提供了自动安装的文件,比如pygame的Windows版本,直接双击安装就可以.但大多数模块没有提供这样的安装方式,有些同学没能成功安装而导致无法在程序中引入模块.在这里,介绍一下python模块http://www.maiziedu.com/course/python/393-4380/几种常见的安装方法.   1. 直接copy 下

python模块——hashlib

python模块--hashlib hashlib模块是对许多hash函数的一个公共接口 new(name, string = '')    执行给定的hash函数来返回一个新的hash对象,使用给定的字符串数据初始化hash对象.如: >>> import hashlib >>> hashlib.new('md5', string='abc').hexdigest()    #hexdigest() 使加密后的结果以十六进制显示 '900150983cd24fb0d6

python模块导入原理

转自:http://blog.csdn.net/u012422440/article/details/41791433 今日在自学Python,借此机会,正好重新开始写博文,既可以巩固python的知识,也可顺便提高一下文笔. 一.python模块基础 言归正传,Python的模块是python语言中代码复用的最高级别,也是系统命名空间的的划分标准,也是供顶层文件(就是包含程序主要控制流程的部分)调用的工具库文件.实现模型其实很简单,任何一个python文件都可以当做模型通过import进行导入

Python字典方法copy()和deepcopy()的区别

1 from copy import deepcopy # import deepcopy模块 2 d = {} 3 d['name'] = ['black', 'guts'] # d = {'name': ['black', 'guts']} 4 c = d.copy() # c = {'name': ['black', 'guts']} 5 dc = deepcopy(d) # dc = {'name': ['black', 'guts']} 6 d['name'].append('whit

7.python模块补充

此文章是对上节文章模块的补充 一,xml模块 xml是实现不同语言或程序之间进行数据交换的协议,可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言.xml的格式如下,就是通过<>节点来区别数据结构的: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <?xml version="1.0"?> <data>     <country nam

python模块自学

随python附带安装的有python标准库,标准库中有很多模块,一般常见的任务都可以由指定的模块来直接实现,python标准库包含的模块有上百个之多,如__builtin__模块(这个模块包含 Python 中使用的内建函数,一般不用手动导入这个模块,Python会帮你做好一切).os模块.re模块.math模块.sys模块.copy模块.time模块.threading模块.urllib模块等等,还有一些其他线程和进程.网络协议等等各种模块,这里来说一下独立的探索这些模块的方法. pytho

python-学习笔记之-Day5 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化

1.双层装饰器 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = False   def check_log(func): def inner(): res = func() if LOGIN_INFO: print('验证成功!') return res else: print('验证失败!') return inner   def check_admin(func)