Python基础

一、基本概念

1、深拷贝和浅拷贝

1)深拷贝和浅拷贝概念

1.深拷贝,拷贝的程度深,自己新开辟了一块内存,将被拷贝内容全部拷贝过来了;
2.浅拷贝,拷贝的程度浅,只拷贝原数据的首地址,然后通过原数据的首地址,去获取内容。
两者的优缺点对比:
(1)深拷贝拷贝程度高,将原数据复制到新的内存空间中。改变拷贝后的内容不影响原数据内容。但是深拷贝耗时长,且占用内存空间。
(2)浅拷贝拷贝程度低,只复制原数据的首地址。其实是将副本的地址指向原数据地址。修改副本内容,是通过当前地址指向原数据地址,去修改。所以修改副本内容会影响到原数据内容。但是浅拷贝耗时短,占用内存空间少。

 (3)相比于浅拷贝,b= a这种直接指向a的首地址,a和b完全一样。

import copy 
a = [1,2,3,[4,5]]
b = a
c = a[:]
d = a.copy() 
e = copy.deepcopy(a)

 

结合上面两图,得出结论:

1)b=a为直接指向a的地址,a和b完全一样

2)c = a[:]等同于浅copy,只指向a的首地址,copy出来的是a的首地址,后面的地址指向一样,这样看首地址的元素互不影响,非首地址的元素公用存储空间,会收到影响

3)d为深copy,完全复制元素和指针,开辟自己的新的内存空间,a与d之间的任何操作互不影响

可视化python在线编程平台:

Python Tutor code visualizer: Visualize code in Python, JavaScript, C, C++, and Java


2)对比JAVA:

在Java中基本数据类型数据直接存储在栈(stack)中,引用数据类型数据存储的是该对象在栈中引用,真实的数据存放在堆内存里,引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值