python的深浅拷贝

这篇具有很好参考价值的文章主要介绍了python的深浅拷贝。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

copy函数是浅拷贝,只对可变类型的第一层对象进行拷贝,对拷贝的对象开辟新的内存空间进行存储,不会拷贝对象内部的子对象。对于不可变对象而言,浅拷贝只是引用赋值。

deepcopy函数是深拷贝,对于可变类型,深拷贝是逐层进行拷贝。对于不可变类型而言,也是引用赋值。

代码示范:

# 对于可变对象,浅拷贝只拷贝第一层数据,深拷贝会逐层拷贝
# 对于不可变对象来说,无论深浅拷贝 都不会进行拷贝,只是引用赋值
a = 1
b = a
print(a)
print(b)
print(id(a))
print(id(b))

python深拷贝,python,开发语言 

 文章来源地址https://www.toymoban.com/news/detail-656831.html

 

# 当对不可变对象,进行赋值时,不会改变原值内容,会开辟一个新空间并指向
a = 2
print(a)
print(b)
print(id(a))
print(id(2))
print(id(b))
print(id(1))

python深拷贝,python,开发语言 

# 不可变对象拷贝时
a = 1
b = copy.copy(a) # 浅拷贝
print(id(1))
print(id(a))
print(id(b))

c = copy.deepcopy(a)
print(id(c))
 
 
 

python深拷贝,python,开发语言

 

可变对象中保存不可变数据

# 可变对象中保存的是不可变数据
cl1 = [1,2,3,'a','b']

cl2 = copy.copy(cl1)

# 如果拷贝成功 值相等 地址不同
print(cl1)
print(cl2)
print(id(cl1))
print(id(cl2))


cl1[0] = 111

print(cl1)
print(cl2)
print(id(cl1))
print(id(cl2))

 python深拷贝,python,开发语言

cl1 = [1,2,3,'a','b']

cl2 = copy.deepcopy(cl1)

print(cl1)
print(cl2)
print(id(cl1))
print(id(cl2))


cl1[0] = 111

print(cl1)
print(cl2)
print(id(cl1))
print(id(cl2))

python深拷贝,python,开发语言

 

可变对象中,保存的可变数据

# 可变对象中 保存的可变数据
a = [1,2]
cl1 =[3,a]
cl2 = copy.copy(cl1)

print(cl1)
print(cl2)
print(id(cl1))
print(id(cl2))

cl1[1][0] = 11
print(cl1)
print(cl2)
print(id(cl1))
print(id(cl2))

python深拷贝,python,开发语言 

a = [1,2]
cl1 =[3,a]
cl2 = copy.deepcopy(cl1)

print(cl1)
print(cl2)
print(id(cl1))
print(id(cl2))

cl1[1][0] = 11
print(cl1)
print(cl2)
print(id(cl1))
print(id(cl2))

python深拷贝,python,开发语言 

 

 python深拷贝,python,开发语言

 

 

 

 

 

 

 

 

到了这里,关于python的深浅拷贝的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [开发语言][c++][python]:C++与Python中的赋值、浅拷贝与深拷贝

    写在前面 :Python和C++中的赋值与深浅拷贝,由于其各自语言特性的问题,在概念和实现上稍微有点差异,本文将这C++和Python中的拷贝与赋值放到一起,希望通过对比学习两语言实现上的异同点,加深对概念的理解。 C++中所谓的 浅拷贝 就是由(系统默认的) 拷贝构造函数对

    2024年02月02日
    浏览(54)
  • 认识Object类和深浅拷贝

    本文介绍了Object类以及Object类部分方法,toString方法,equals和hashCode方法(重写前和重写后的对比),getClass方法,clone方法,以及拷贝新对象时会出现的深浅拷贝, 内容较长,耗时一天,建议收藏后观看~ Object类是Java默认提供的一个类。而这个类是Java里所有类的顶级父类,即在继承体系下

    2023年04月20日
    浏览(34)
  • C# List 复制之深浅拷贝

    声明类 执行上述方法, 修改list1 中的属性值, 发现list2 的属性值会跟着变化, list3 的属性值不发生变化; 由于进行的是浅拷贝,所以直接将list1的内容复制给了list2,虽然list1和list2所在的地址不一样,但是两个list存储的对象仍然是相同的(因为把list1复制到list2时,浅拷贝复制的

    2024年02月07日
    浏览(52)
  • 深浅拷贝,类型检测及继承面试题

    基本类型:基本类型的值存在栈内存中 引用类型: 引用类型的地址存储在栈内存中,他的值存储在堆内存中,通过指针(地址)连接 基本类型:基本类型拷贝的是值 引用类型:引用类型拷贝的是变量的地址,会造成数据共享问题 基本类型: 基本类型传递的是值 引用类型:

    2024年02月02日
    浏览(32)
  • 【C++】string类的深浅拷贝问题

    我们知道,定义一个类的时候,如果我们没有写构造,拷贝构造,赋值运算符重载,析构方法的话,编译器会自动生成。当该类成员中涉及到资源的管理时,实现的就是浅拷贝。所以,以上这几种方式是必须要程序猿手动实现的。 举例来看: 图中所示:实现了构造和析构,

    2023年04月26日
    浏览(40)
  • JavaScript深浅拷贝的几种方式

    深浅拷贝主要是针对于引用类型而言的 1. JSON.parse(JSON.strigify(Str)) JSON.stringify() 该方法用于将一个字转换为JSON字符串,该字符串符合JSON格式,并且可以被JSON.parse()方法还原。 对于原始类型的字符串,转换结果会带双引号 如果要转换的对象的属性是undefined,函数或xml对象,该

    2024年01月19日
    浏览(49)
  • 【C++】vector类的模拟实现(增删查改,拷贝构造,赋值运算,深浅拷贝)

    🌏博客主页: 主页 🔖系列专栏: C++ ❤️感谢大家点赞👍收藏⭐评论✍️ 😍期待与大家一起进步! 我们模拟vector是用迭代器(start,end,endofstorage)来控制增删查改操作的 1普通构造 2迭代器构造 3初始化字符构造 4拷贝构造: 1当前大小(size()) 2总体容量(capacity()) 1begin()

    2024年02月15日
    浏览(59)
  • 【C++入门到精通】C++入门 —— 深浅拷贝函数

    目录 拷贝函数 浅拷贝拷贝构造函数 深拷贝拷贝构造函数 总结         前面我们学习了C++的一些基本的知识点,并且介绍了一些STL里面String的一些关键操作,除了这些博主还新开了一个专栏关于Linux的讲解(Linux专栏链接)大家可以关注一下,后面我会一点一点的更新的。大

    2024年02月13日
    浏览(32)
  • 前端面试题(第三弹)——js对象的基本方法和深浅拷贝

    第一种 第二种 1.configurable:属性是否可以通过delete删除,默认值为true。 2.enumberable:属性是否可以通过for in 进行循环返回,默认值为true。 3.writable:属性是否可被修改,默认值为true。 4.value:属性实际的值,默认为undefined。 访问器属性有四个属性类型,也是使用Object.defin

    2024年02月13日
    浏览(45)
  • 【C++进阶(三)】STL大法--vector迭代器失效&深浅拷贝问题剖析

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C++从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C++   🔝🔝 在阅读本篇文章前,一定要先看前集: vector深度剖析(上) 本章重点: 本章会重点讲解vector迭代器失效问题 以及vector中的深浅拷贝问题 并且简

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包