码迷,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
迷上了代码!