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

 更新时间:2022年03月16日 08:46:51   作者:karsa__  
这篇文章主要介绍了python 中赋值,深拷贝,浅拷贝的区别,下文利用实例对三者进行详细的解析,具有一的的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
  • 赋值:其实就是对象的引用(相当于取别名)。
  • 浅拷贝(copy):拷贝父对象,不会拷贝对象内部的子对象,会引用子对象。
  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

一、赋值实例

# 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 都指向同一个对象,所以得到的结果都一样

二、浅拷贝实例

# 浅拷贝实例
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 是一个独立的对象,但他们的子对象还是指向统一对象(是引用子对象)。

三、深拷贝实例

# 深拷贝实例
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赋值,深拷贝,浅拷贝内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用keras实现孪生网络中的权值共享教程

    使用keras实现孪生网络中的权值共享教程

    这篇文章主要介绍了使用keras实现孪生网络中的权值共享教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python2随机数列生成器简单实例

    Python2随机数列生成器简单实例

    这篇文章主要介绍了Python2随机数列生成器,结合简单实例形式分析了Python基于random模块操作随机数的相关实现技巧,需要的朋友可以参考下
    2017-09-09
  • tensorflow多维张量计算实例

    tensorflow多维张量计算实例

    今天小编就为大家分享一篇tensorflow多维张量计算实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 利用Python实现个性化日历

    利用Python实现个性化日历

    虽然市面上已经存在现成的日历功能,并且有第三方库可以直接调用实现,但我们仍然希望通过自己编写日历程序来引出我认为好用的日历实现,所以下面就跟随小编一起学习一下如何使用Python编写一个简单的日历程序吧
    2024-02-02
  • TF-IDF算法解析与Python实现方法详解

    TF-IDF算法解析与Python实现方法详解

    这篇文章主要介绍了TF-IDF算法解析与Python实现方法详解,文章介绍了tf-idf算法的主要思想,分享了Python实现tr-idf算法所必要的预处理过程,以及具体实现代码等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Python深度学习pytorch神经网络图像卷积运算详解

    Python深度学习pytorch神经网络图像卷积运算详解

    这篇文章主要介绍了Python深度学习关于pytorch神经网络图像卷积的运算示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • Python实现pdf文档转txt的方法示例

    Python实现pdf文档转txt的方法示例

    这篇文章主要介绍了Python实现pdf文档转txt的方法,结合实例形式分析了Python基于第三方库pdfminier实现针对pdf格式文档的读取、转换等相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • web.py获取上传文件名的正确方法

    web.py获取上传文件名的正确方法

    这篇文章主要介绍了web.py获取上传文件名的正确方法,遇到这个问题的朋友可能会困惑半天,使用本文的正确方法就可以解决这个问题了,需要的朋友可以参考下
    2014-08-08
  • 给你一面国旗 教你用python画中国国旗

    给你一面国旗 教你用python画中国国旗

    朋友圈许多小伙伴都在发:请给我一面五星红旗的动态,这篇文章就主要教大家如何使用python画中国国旗,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Python for循环中的陷阱详解

    Python for循环中的陷阱详解

    这篇文章主要给大家介绍了关于Python for循环中陷阱的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07

最新评论