Python赋值、浅拷贝与深拷贝的区别是什么?实例详解
更新时间:2026年07月23日 09:16:35 作者:Python 学习者
Python赋值是引用还是复制?本文清晰讲解赋值操作如何产生对象引用,以及修改可变对象可能带来的影响,你还会学到使用分片、copy方法等实现浅拷贝,并了解嵌套结构下深层复制的必要性,避免程序中的意外错误
1.引用
python中,赋值操作会产生相同对象的多个引用,如果在原位置修改这个可变对象时,可能会影响程序其他位置对这个对象的引用。
>>> x = [1, 2, 3] >>> y = [x, 4, 5] >>> z = [x, 6] >>> y [[1, 2, 3], 4, 5] >>> z [[1, 2, 3], 6] # 改变被多次引用的变量x >>> x[0] = 2 >>> y [[2, 2, 3], 4, 5] >>> z [[2, 2, 3], 6]
引用类似于其他语言的“指针”。
通过引用,就可以在程序范围内任何地方传递大型对象而不必在途中进行开销巨大的赋值操作。
2.赋值
赋值与引用不同,复制后会产生一个新的对象,原对象修改后不会影响到新的对象。
赋值的方法:
没有起点和重点的分片法:
>>> A = [1, 2, 3] >>> B = A[:] # B赋值A >>> B [1, 2, 3] # 改变A的值 >>> A[0] = 2 >>> A [2, 2, 3] >>> B [1, 2, 3]
字典、集合或列表的copy方法:
>>> a = [1, 2, 3] >>> b = a.copy() # b赋值a # 改变a的值 >>> a[0] = 2 >>> a [2, 2, 3] >>> b [1, 2, 3]
list()、dict()、set()等内置函数可以进行赋值:
>>> x = [1, 2] >>> y = list(x) >>> x[1] = 3 #Python学习交流群:711312441 >>> x [1, 3] >>> y [1, 2]
不过需要注意的是,这种赋值仅能做到顶层赋值,如果出现嵌套的情况下仍不能进行深层赋值。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Python使用SQLAlchemy操作Mysql数据库的操作示例
SQLAlchemy是Python的SQL工具包和对象关系映射(ORM)库,它提供了全套的企业级持久性模型,用于高效、灵活且优雅地与关系型数据库进行交互,这篇文章主要介绍了Python使用SQLAlchemy操作Mysql数据库,需要的朋友可以参考下2024-08-08
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
这篇文章主要介绍了Python微信机器人开发 微信登录和获取好友列表实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-08-08
python网络爬虫精解之Beautiful Soup的使用说明
简单来说,Beautiful Soup 是 python 的一个库,最主要的功能是从网页抓取数据,Beautiful Soup 提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能,需要的朋友可以参考下2021-09-09


最新评论