Python-深浅拷贝
2022/3/27 11:52:46
本文主要是介绍Python-深浅拷贝,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、数字和字符串
对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。
二、其他基本数据类型
对于字典、元祖、列表而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。
1.赋值。
赋值,只是创建一个变量,该变量指向原来内存地址,如:
2.浅拷贝
浅拷贝,在内存中只额外创建第一层数据。
import copy n1 = {"x1":"Hello","x2":520,"x3":["World",999]} n3 = copy.copy(n1) print("n1的内存地址为:\n",id(n1)) print("浅拷贝后,n3是新的内存地址,在内存中只额外创建第一层数据:\n",id(n3))
print("n1的结果为:\n",n1) print("n3的结果为:\n",n3)
n3['x1']='你好' # 修改第1层数据 print("n3的结果为:\n",n3) # n3第1次变化 print("n1的结果为:\n",n1) # 原数据n1不变
n3['x3'][0]='世界' # 修改第2层数据 print("n3的结果为:\n",n3) # n3第2次变化 print("n1的结果为:\n",n1) # 原数据变化!
3.深拷贝。
深拷贝,在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)
import copy n1 = {"x1":"Hello","x2":520,"x3":["World",999]} n4 = copy.deepcopy(n1) print("n1的内存地址为:\n",id(n1)) print("浅拷贝后,n4是新的内存地址,在内存中将所有的数据重新创建一份(排除最后一层):\n",id(n4))
n4['x1']='你好' # 修改第1层数据 print("n4的结果为:\n",n4) # n4第1次变化 print("n1的结果为:\n",n1) # 原数据n1不变
n4['x3'][0]='世界' # 修改第2层数据 print("n4的结果为:\n",n4) # n4第2次变化 print("n1的结果为:\n",n1) # 原数据n1不变
这篇关于Python-深浅拷贝的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python
- 2024-03-12python colon equals