定制网站python深拷贝和浅拷贝的区别

一、定制网站首先和浅拷贝都是对原定制网站对象的拷贝,定制网站都会生成一个看起来相同的对象,定制网站本质区别就是拷贝出来的对象的「地址」定制网站是否与原对象一样,定制网站即就是定制网站对原对象的地址的拷贝,定制网站还是值的拷贝

深拷贝:对原对象的地址的拷贝,定制网站新拷贝了一份与原对象定制网站不同的地址的对象,修改对象中的任何值,都不会改变深拷贝的对象的值。

:对原对象的值的拷贝,地址仍是一个指针指向原对象的地址,浅拷贝或者原对象的值发生变化,那原对象和浅拷贝对象的值都会随着被改变。

浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用

深拷贝(深度克隆):不仅复制对象的基本类,同时也复制原对象的对象,完全是新对象产生的

1.copy.copy 浅拷贝——只拷贝对象,不会拷贝对象的引用对象,不会拷贝原始对象的内部的

2.copy.deepcopy   深拷贝——拷贝对象的值类型,还拷贝了原始对象,而产生了一个新的对象,不仅仅只拷贝了原始对象的引用

二、补充概念:可变对象,不可变对象

可变对象:一个对象在不改变其所指向的地址前提下,可以修改其所执行的地址中的值

不可变对象:一个对象所指向的地址上的值是不能修改的,如果修改了就是它执行的地址就改变了,相当于将这个对象指向的值复制出来一份,然后做了修改后存到另一个地址上了。

区别:可变对象就不会这样会修改值后另存到一个新的地址上,而是直接再原对象的地址上把值给改变了,这个对象依然执行这个地址

本质区别:可变对象修改了值,不会新建一个内存地址的对象,不可变对象如果修改了值,及时复制了一份新的内存地址,原始地址的值不会被改变。

不可变元素包含:int,float,complex,long,str,unicode,tuple

可变原生:list

例子:

  1. import copy
  2. a = [1, 2, 3, 4, ['a', 'b']]
  3. b = a #赋值,传对象的引用
  4. c = copy.copy(a) #浅拷贝,对象拷贝
  5. d = copy.deepcopy(a) #深拷贝,对象拷贝
  6. a.append(5) #修改对象a,列表末尾添加数字5
  7. a[4].append('c') #修改对象a中的列表['a', 'b']
  8. print 'a= ', a
  9. print 'b= ', b
  10. print 'c= ', c
  11. print 'd= ', d
  12. 输出结果:
  13. a = [1, 2, 3, 4, ['a', 'b', 'c'], 5] #修改了原始对象,变为修改后的列表
  14. b = [1, 2, 3, 4, ['a', 'b', 'c'], 5] #对象的引用,对象的任何值变化都随着变化
  15. c = [1, 2, 3, 4, ['a', 'b', 'c']] #浅拷贝,不可变元素不能改变,可变元素随着原始对的变化而变化了
  16. d = [1, 2, 3, 4, ['a', 'b']] #深拷贝,原始对象的值发生任何变化,深拷贝新的对象内存地址不会发生任何变化

参考:

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发