脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - python 中赋值,深拷贝,浅拷贝的区别

python 中赋值,深拷贝,浅拷贝的区别

2022-11-03 10:46karsa__ Python

这篇文章主要介绍了python 中赋值,深拷贝,浅拷贝的区别,下文利用实例对三者进行详细的解析,具有一的的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助

  • 赋值:其实就是对象的引用(相当于取别名)。
  • 浅拷贝(copy):拷贝父对象,不会拷贝对象内部的子对象,会引用子对象。
  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

一、赋值实例

?
1
2
3
4
5
6
7
8
9
# a这个大列表是一个父对象,里面的小列表是a的一个子对象
a = [1, 2, 3, ["a", "b"]]
# 赋值实例
b = a
print("a:", a)
print("b:", b)
## 打印结果
a: [1, 2, 3, ['a', 'b']]
b: [1, 2, 3, ['a', 'b']]

解析:

b = a: 赋值引用,a 和 b 都指向同一个对象,所以得到的结果都一样

二、浅拷贝实例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 浅拷贝实例
a = [1, 2, 3, ["a", "b"]]
c = a.copy()
# 第一次打印
print("a:", a)
print("c:", c)
# 给a对象中的子对象添加元素
a[3].append("c")
print("a:", a)
print("c:", c)
# 给a这个父对象添加元素
a.append(4)
print("a:", a)
print("c:", c)
 
## 打印结果
a: [1, 2, 3, ['a', 'b']]
c: [1, 2, 3, ['a', 'b']]
a: [1, 2, 3, ['a', 'b', 'c']]
c: [1, 2, 3, ['a', 'b', 'c']]
a: [1, 2, 3, ['a', 'b', 'c'], 4]
c: [1, 2, 3, ['a', 'b', 'c']]

 解析:

c = a.copy(): 浅拷贝, a 和 c 是一个独立的对象,但他们的子对象还是指向统一对象(是引用子对象)。

三、深拷贝实例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 深拷贝实例
import copy
a = [1, 2, 3, ["a", "b"]]
d = copy.deepcopy(a)
# 第一次打印
print("a:", a)
print("d:", d)
# 给a对象中的子对象添加元素
a[3].append("c")
print("a:", a)
print("d:", d)
# 给a这个父对象添加元素
a.append(4)
print("a:", a)
print("d:", d)
 
## 打印结果
a: [1, 2, 3, ['a', 'b']]
d: [1, 2, 3, ['a', 'b']]
a: [1, 2, 3, ['a', 'b', 'c']]
d: [1, 2, 3, ['a', 'b']]
a: [1, 2, 3, ['a', 'b', 'c'], 4]
d: [1, 2, 3, ['a', 'b']]

解析:

d = copy.deepcopy(a): 深度拷贝, d 完全拷贝了a这个父对象及其子对象,a与d两者是完全独立的。

到此这篇关于python 中赋值,深拷贝,浅拷贝的区别的文章就介绍到这了,更多相关python赋值,深拷贝,浅拷贝内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/karsa__/article/details/123506526

延伸 · 阅读

精彩推荐
  • Pythonpython 垃圾收集机制的实例详解

    python 垃圾收集机制的实例详解

    这篇文章主要介绍了 python 垃圾收集机制的实例详解的相关资料,希望通过本文能帮助大家理解这部分内容,需要的朋友可以参考下...

    wangyuquan2492020-12-03
  • Python查看django执行的sql语句及消耗时间的两种方法

    查看django执行的sql语句及消耗时间的两种方法

    今天小编就为大家分享一篇查看django执行的sql语句及消耗时间的两种方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    lanyang1234568062021-02-26
  • PythonPython2.7 实现引入自己写的类方法

    Python2.7 实现引入自己写的类方法

    下面小编就为大家分享一篇Python2.7 实现引入自己写的类方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    萌萌哒恒宝10652021-02-07
  • Python对Python中Iterator和Iterable的区别详解

    对Python中Iterator和Iterable的区别详解

    今天小编就为大家分享一篇对Python中Iterator和Iterable的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    passionkk5062021-04-09
  • Pythonpython traceback捕获并打印异常的方法

    python traceback捕获并打印异常的方法

    这篇文章主要介绍了python traceback捕获并打印异常的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Alummox5212021-03-31
  • PythonOpenCV实现灰度、高斯模糊、边缘检测的示例

    OpenCV实现灰度、高斯模糊、边缘检测的示例

    这篇文章主要介绍了OpenCV实现灰度、高斯模糊、边缘检测的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    Kukeoo7272021-10-21
  • PythonDjango自带的用户验证系统实现

    Django自带的用户验证系统实现

    这篇文章主要介绍了Django自带的用户验证系统实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    ZPeng_Yan4642021-08-16
  • PythonPython学习之循环方法详解

    Python学习之循环方法详解

    循环是有着周而复始的运动或变化的规律;在 Python 中,循环的操作也叫做 遍历。与现实中一样,Python 中也同样存在着无限循环的方法与有限循环的方法。...

    渴望力量的哈士奇8142022-10-25