标签:
深拷贝和浅拷贝 |
Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。
对象赋值
1 #-*-coding:utf-8-*- 2 #!/usr/bin/env python 3 __author__ = ‘mengxj‘ 4 5 will = ["Will", 28, ["Python", "C#", "JavaScript"]] 6 wilber = will 7 print (‘will的内存指向‘,id(will)) 8 print (‘will的数据‘,will) 9 print (‘每一个元素的地址‘,[id(ele) for ele in will]) 10 print (‘willer的内存指向‘,id(wilber)) 11 print (‘willer的数据‘,wilber) 12 print (‘每一个元素的地址‘,[id(ele) for ele in wilber]) 13 14 will[0] = "Wilber" 15 will[2].append("CSS") 16 print (‘数据更改后的will内存指向‘,id(will)) 17 print (‘数据更改后的will的数据‘,will) 18 print (‘数据更改后每一个元素的地址‘,[id(ele) for ele in will]) 19 print (‘数据更改后wilber的内存指向‘,id(wilber)) 20 print (‘数据更改后wilber的内容‘,wilber) 21 print (‘数据更改后wilber的内存地址‘,[id(ele) for ele in wilber])
代码运行结果如下:
1 C:\Python35\python.exe D:/OneDrive/python_code/python_s14/s14_day2/deep_copy_and_shadow_copy.py 2 will的内存指向 2427689548744 3 will的数据 [‘Will‘, 28, [‘Python‘, ‘C#‘, ‘JavaScript‘]] 4 每一个元素的地址 [2427689542464, 1516176688, 2427689571720] 5 willer的内存指向 2427689548744 6 willer的数据 [‘Will‘, 28, [‘Python‘, ‘C#‘, ‘JavaScript‘]] 7 每一个元素的地址 [2427689542464, 1516176688, 2427689571720] 8 数据更改后的will内存指向 2427689548744 9 数据更改后的will的数据 [‘Wilber‘, 28, [‘Python‘, ‘C#‘, ‘JavaScript‘, ‘CSS‘]] 10 数据更改后每一个元素的地址 [2427689578768, 1516176688, 2427689571720] 11 数据更改后wilber的内存指向 2427689548744 12 数据更改后wilber的内容 [‘Wilber‘, 28, [‘Python‘, ‘C#‘, ‘JavaScript‘, ‘CSS‘]] 13 数据更改后wilber的内存地址 [2427689578768, 1516176688, 2427689571720] 14 15 Process finished with exit code 0
关于赋值、浅拷贝和深拷贝的区别如下:
http://python.jobbole.com/82294/
标签:
原文地址:http://www.cnblogs.com/bravexz/p/5724733.html