商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Python赋值、浅拷贝与深拷贝的区别是什么?实例详解

Python赋值、浅拷贝与深拷贝的区别是什么?实例详解

  发布于2026-07-23 阅读(0)

扫一扫,手机访问

1.引用

在Python中,赋值操作经常会产生多个指向同一对象的引用。一旦在原地修改了这个可变对象,就会影响到程序中所有引用该对象的地方。

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
>>> x
[1, 3]
>>> y
[1, 2]

不过需要特别注意的是,上述方法仅能做到顶层赋值。一旦出现嵌套结构,它们就无法进行深层复制了。

总结

说到底,引用和赋值虽然写法相似,但行为截然不同。理解并区分这两个概念,能有效避免在程序中产生预期之外的副作用。

本文转载于:https://www.jb51.net/python/3679254ow.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注