码迷,mamicode.com
首页 > 编程语言 > 详细

python之路第二篇

时间:2016-08-01 10:23:30      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

 

 

 

 

 

 

 

 

 

 

 

深拷贝和浅拷贝

 

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/

 

python之路第二篇

标签:

原文地址:http://www.cnblogs.com/bravexz/p/5724733.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!