python中的赋值、浅拷贝与深拷贝
python中的赋值、浅拷贝与深拷贝
在介绍这三者的概念之前,我们首先来了解一下python的内存管理机制,见文章(该文章随后完成),在看这篇文章时,我们首先了解一些有关python的基础知识。
1、如何查看python中某个对象在内存中的地址?
# python2.7中id的用法
a = "Hello world!"
print id(a)
2、python分为可变对象和不可变对象,分别是那些?
TODO:后续详细的整理一下这块
【转】python中的可变对象和不可变对象介绍
【转】深拷贝与浅拷贝参考文章
浅拷贝(顶层复制)、深拷贝
1、例子
执行以下操作,输出结果为什么?
a = [1,[2,3]]
b = a # 赋值
c = list(a) # 相当于浅拷贝
d = a[:] # 浅拷贝
e = copy.copy(a) # 浅拷贝
f = copy.deepcopy(a) # 深拷贝
a[0] = 0
a[1].append(4)
a.append(5)
print a, id(a)
print b, id(b)
print c, id(c)
print d, id(d)
print e, id(e)
print f, id(f)
结果为:
>>> print a, id(a)
[0, [2, 3, 4], 5] 4435126896
>>> print b, id(b)
[0, [2, 3, 4], 5] 4435126896
>>> print c, id(c)
[1, [2, 3, 4]] 4435127400
>>> print d, id(d)
[1, [2, 3, 4]] 4435126968
>>> print e, id(e)
[1, [2, 3, 4]] 4435127544
>>> print f, id(f)
[1, [2, 3]] 4435127112
为什么会出现这种情况,我们接下来详细分析以下: