Python之深浅拷贝&函数
一、深浅拷贝
深浅拷贝是指copy模块下的copy()和deepcopy()方法。
1、浅拷贝
示例:
>>> import copy
>>> a = 'hello word'
>>> b = {1:'gome',2:'ahaii',3:[1,2,3,4]}
>>> a1 = copy.copy(a)
>>> b1 = copy.copy(b)
>>> print id(a)
140458175739296
>>> print id(a1)
140458175739296
>>> print id(b)
140458175695680
>>> print id(b1)
140458175749208
>>> print id(b[3])
140458175609096
>>> print id(b1[3])
140458175609096
>>> print id(b[3][0])
41361752
>>> print id(b1[3][0])
41361752
浅拷贝时,变量的内存地址不会发生改变。
2、深拷贝
示例1:
>>> import copy
>>> a = 'hello word'
>>> print id(a)
140069292463520
>>> a1 = copy.deepcopy(a)
>>> print id(a1)
140069292463520
对于字符串或者整型,深拷贝同浅拷贝效果一样,其内存地址不会发生改变。
示例2:
>>> import copy
>>> b = {1:'hello word',2:'ahaii',3:[1,2,3,4]}
>>> b1 = copy.deepcopy(b)
>>> print id(b)
140442326100800
>>> print id(b1)
140442326156184
>>> print id(b[3])
140442326014216
>>> print id(b1[3])
140442326097288
>>> print id(b[3][0])
32555352
>>> print id(b1[3][0])
32555352
深拷贝时,除了最内层数据(字符串或数字)外,其他数据都会重新创建一份,内存地址发生改变。
二、函数之动态参数
示例1:
def func (*arg):#一个可变参数,放在元组中
print arg
func (1,2,3,4,5,6)#结果为一个元组:(1,2,3,4,5,6)
*arg 表示该函数可以接受个数可变的参数,将获取的所有参数存放在一个元组中。
示例2:
def func (**kwargs):#一个可变参数,放在字典中
print kwargs
func(a=123,b=234,c=345)#结果为一个字典:{'a': 123, 'c': 345, 'b': 234}
**kwargs 表示该函数可以接受个数可变的参数,将获取的所有参数以键值对形式存放在字典中。
示例3:
def func (*arg,**kwargs):
print arg,kwargs
l = [11,22,33]
d = {'':'ewe','':'ddf'}
func(l,d)#结果为一个元组和一个空字典:([11, 22, 33], {'1': 'ewe', '2': 'ddf'}) {}
该函数有两个形参,当给函数传参时(参数为一个元组和一个字典),函数会把这两个参数传给第一个形参*arg,生成一个元组。**kwargs没有接收参数,为一个空字典。
示例4:
def func(*arg,**kwargs):#两个可变参数,字符串放在元组中,键值对放在字典中
print arg,kwargs
func('aha','dfjid','fdjfdkf',a=123,b=234)#结果为:('aha', 'dfjid', 'fdjfdkf') {'a': 123, 'b': 234}
既有字符串,也有键值对时,字符串传递给*arg,放在元组中,键值对传递给**kwargs,放在字典中。
示例5:
def func (*arg,**kwargs):
print arg,kwargs
l = [11,22,33]
d = {'':'ewe','':'ddf'}
func(*l,**d)#结果为:(11, 22, 33) {'1': 'ewe', '2': 'ddf'}
Python之深浅拷贝&函数的更多相关文章
- Python的深浅拷贝
Python的深浅拷贝 深浅拷贝 1. 赋值,对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量并不是复制一份内容 list1 = [']] list2 = list1 p ...
- Python原理 -- 深浅拷贝
python原理 -- 深浅拷贝 从数据类型说开去 str, num : 一次性创建, 不能被修改, 修改即是再创建. list,tuple,dict,set : 链表,当前元素记录, 下一个元素的位 ...
- python基础(三元运算+深浅拷贝+函数参数)
三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 书写格式: result = 值1 if 条件 else 值2 即如果条件成立,则将值1赋给result变量,如果不 ...
- python基础-3 集合 三元运算 深浅拷贝 函数 Python作用域
上节课总结 1 运算符 in 字符串 判断 : “hello” in "asdasfhelloasdfsadf" 列表元素判断:"li" in ['li', ...
- Python学习基础(二)——集合 深浅拷贝 函数
集合 # 集合 ''' 集合是无序不重复的 ''' # 创建列表 l = list((1, 1, 1)) l1 = [1, 1, 1] print(l) print(l1) print("* ...
- python-Day3-set 集合-counter计数器-默认字典(defaultdict) -可命名元组(namedtuple)-有序字典(orderedDict)-双向队列(deque)--Queue单项队列--深浅拷贝---函数参数
上节内容回顾:C语言为什么比起他语言块,因为C 会把代码变异成机器码Pyhton 的 .pyc文件是什么python 把.py文件编译成的.pyc文件是Python的字节码, 字符串本质是 字符数组, ...
- 图解Python中深浅拷贝
在工作中,常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题.为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用.为了生成这个副本,就产生了拷贝.今天就 ...
- python高级-深浅拷贝(16)
一.浅拷贝 浅拷贝是对一个对象的顶层拷贝,通俗地讲就是:拷贝了引用,并没有拷贝内容. a = [1,2,3] print(id(a)) b=a print(b) print(id(b)) a.appe ...
- JS中深浅拷贝 函数封装代码
一.了解 基本数据类型保存在栈内存中,按值访问,引用数据类型保存在堆内存中,按址访问. 二.浅拷贝 浅拷贝只是复制了指向某个对象的指针,而不是复制对象本身,新旧对象其实是同一内存地址的数据,修改其中一 ...
随机推荐
- ArrayList、HashSet、HashTable、List、Dictionary的区别
在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求. 由于这种限制不方便,所以出现了ArrayList. ArrayList.List<T> ArrayList是可变长数组,你 ...
- [转]Numpy使用MKL库提升计算性能
from:http://unifius.wordpress.com.cn/archives/5 系统:Gentoo Linux (64bit, Kernel 3.7.1)配置:Intel(R) Cor ...
- 拿来之笔 希望铭记 笔记 出处 http://www.jianshu.com/p/acb8885283dc
最近有机会对不同岗位的应聘者进行面试,其中有架构师.技术经理.开发岗位.谈谈几个印象深刻的. 面试者一,女性.重点大学硕士,从事软件技术工作十四年,应聘架构师岗位.按照套路问了下对于软件架构的认识和理 ...
- Sonatype Nexus 服务启动失败问题解决
Sonatype Nexus 服务启动失败问题解决 问题前述: 近日在开发机本机安装了 Oracle 数据库快捷版 11g2 之后,重启电脑后发现本机的maven代理服务无法访问. 现象 通过 Win ...
- Gs_Class._BaseQueryWeb查询页面基类(aspx.net)
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web; ...
- hdu 4122 Alice's mooncake shop(单调队列)
题目链接:hdu 4122 Alice's mooncake shop 题意: 有n个订单和可以在m小时内制作月饼 接下来是n个订单的信息:需要在mon月,d日,year年,h小时交付订单r个月饼 接 ...
- 利用LibreOffice与ImageMagick将网页分享至微信
现在越来越多的内容分享都是在微信上进行了.然而,若想将电脑浏览器中看到的感兴趣的网页分享至微信,则只能以纯文本的方式粘贴超级链接,而不能直接拷贝图文混排的HTML.因此,我想到不妨借助LibreOff ...
- 项目版本管理 github简介
git config user.email "c.wuliying@samsung.com"git config user.name "swportal" ** ...
- jquery复选框操作
$('input[type="checkbox"]').change(function(e) { var checked = $(this).prop("checked& ...
- 特殊函数(__all__)
python里__all__ 属性分别于模块和包之中的用法 一. 在模块(*.py)中使用意为导出__all__列表里的类.函数.变量等成员,否则将导出modualA中所有不以下划线开头(私有)的成员 ...