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

python的深浅copy

时间:2016-05-31 06:21:38      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
a=abc
b=a
a=def
print(b)        #这里打印的是abc
#1.执行a = ‘abc‘,解释器创建了字符串‘abc‘和变量a,并把a指向‘ABC‘
#2.执行b=a,解释器创建了变量b,并把变量b指向了变量a所指向的abc
#3.执行a = ‘def‘,解释器创建了字符串‘def‘,并把a的指向改为‘def‘,但b并没有更改:
#所以最后打印的是abc


name={
    "z":{"age":20,"jx":"tn"},
    "h":{"age":20,"jx":"tn"},
    "x":2,
}

name2=name
name[z][age]=22
print(name is: ,name)
print(name2 is: ,name2)
#结果
# name is:  {‘z‘: {‘jx‘: ‘tn‘, ‘age‘: ‘22‘}, ‘h‘: {‘jx‘: ‘tn‘, ‘age‘: 20}}
# name2 is:  {‘z‘: {‘jx‘: ‘tn‘, ‘age‘: ‘22‘}, ‘h‘: {‘jx‘: ‘tn‘, ‘age‘: 20}}
#这里相当于做了一个别名,软连接,没有再占用一块内存。这样无论你更改name还是name2都是操作的一份数据。
#跟第一个例子是有区别的,对于字符串和数字一些数据类型的处理,会在内存创建一份新的数据,但list,元组,字典,不会这样处理。

#拷贝第一层
name3=name.copy()
name[x]=原字典改变后
name[h][age]=Age
print(name)
print(name3)

#完全独立的数据,占用和元数据相同大小的内存
import copy
name4=copy.deepcopy(name)

 

python的深浅copy

标签:

原文地址:http://www.cnblogs.com/Z-style/p/5544508.html

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