python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python copy deepcopy

python中copy和deepcopy的使用区别

作者:整天梦游的小jerry

本文主要介绍了python中copy和deepcopy的使用区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

python中标识一个对象唯一身份的是:对象的id(内存地址),对象类型,对象值。

deepcopy是真正意义上的复制,深拷贝,被复制对象完全复制一遍作为独立的新个体,新开辟一块空间。

浅拷贝,不会产生独立对象,等于赋值,只是对原有数据块打上新标签,其中一个标签改变,数据块就会变化。浅拷贝等于赋值,也可以通过copy实现,copy仅拷贝对象本身,浅拷贝不会对其中的子对象进行拷贝,如果对子对象进行修改,拷贝结果也会随着修改。

import copy
a = [1,2,3,[4,5],1]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)

a.append(9)
a[3].append(6)

print(a) 	#[1, 2, 3, [4, 5, 6], 1, 9]
print(b)	#[1, 2, 3, [4, 5, 6], 1, 9]
print(c)	#[1, 2, 3, [4, 5, 6], 1]
print(d)	#[1, 2, 3, [4, 5], 1]

print(id(a))	#4594148288
print(id(b))	#4594148288
print(id(c))	#4594455328
print(id(d))	#4592688496


x = 'Hello World'
y = x
z = copy.copy(x)
w = copy.deepcopy(x)
print(id(x)) #4617118576
print(id(y)) #4617118576
print(id(z)) #4617118576
print(id(w)) #4617118576

# 对于不可变类型(元组、数值,字符串等)为浅拷贝,对象的id值与浅复制原来的值相同
# 对于可变类型(列表、字典等)为深拷贝,

 到此这篇关于python中copy和deepcopy的使用区别的文章就介绍到这了,更多相关python copy deepcopy内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文