广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 中赋值,深拷贝,浅拷贝的区别
  • 186
分享到

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

2024-04-02 19:04:59 186人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、赋值实例二、浅拷贝实例三、深拷贝实例赋值:其实就是对象的引用(相当于取别名)。浅拷贝(copy):拷贝父对象,不会拷贝对象内部的子对象,会引用子对象。深拷贝(deepcopy

  • 赋值:其实就是对象的引用(相当于取别名)。
  • 浅拷贝(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赋值,深拷贝,浅拷贝内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python 中赋值,深拷贝,浅拷贝的区别

本文链接: https://www.lsjlt.com/news/142618.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 中赋值,深拷贝,浅拷贝的区别
    目录一、赋值实例二、浅拷贝实例三、深拷贝实例赋值:其实就是对象的引用(相当于取别名)。浅拷贝(copy):拷贝父对象,不会拷贝对象内部的子对象,会引用子对象。深拷贝(deepcopy...
    99+
    2022-11-13
  • Python中赋值、浅拷贝、深拷贝三者的区别
    本篇文章为大家展示了Python中赋值、浅拷贝、深拷贝三者的区别,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;...
    99+
    2023-06-14
  • Python基础之赋值,浅拷贝,深拷贝的区别
    目录一、赋值二、浅拷贝三、深拷贝四、例子一、赋值 不会开辟新的内存空间,只是复制了新对象的引用。所以当一个数据发生变化时,另外一个数据也会随之改变。 二、浅拷贝 创建新对象,其内容是...
    99+
    2022-11-12
  • Python 的赋值,浅拷贝和深拷贝详解
    目录先明确几点赋值浅拷贝深拷贝总结 先明确几点 不可变类型:该数据类型对象所指定内存中的值不可以被改变。 (1)、在改变某个对象的值时,由于其内存中的值不可以被改变,所以,会把原来...
    99+
    2022-11-12
  • javascript赋值、浅拷贝、深拷贝的概念
    本篇内容介绍了“javascript赋值、浅拷贝、深拷贝的概念”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2022-10-19
  • 浅拷贝和深拷贝的区别
    浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用。 2、深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任...
    99+
    2023-09-21
    python
  • js中的赋值 浅拷贝和深拷贝详细
    目录1、js内存2、赋值3、浅拷贝4、深拷贝前言: 在学习下面文章前我们简单了解一下的内存的知识,以下先简要提一下 1、js内存 js内存,或者说大部分语言的内存都分为栈和堆。基本数...
    99+
    2022-11-12
  • 如何解析Python中的赋值、浅拷贝和深拷贝
    这篇文章给大家介绍如何解析Python中的赋值、浅拷贝和深拷贝,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。先明确几点不可变类型:该数据类型对象所指定内存中的值不可以被改变。(1)、在改变某个对象的值时,由于其内存中的...
    99+
    2023-06-22
  • Python中深拷贝与浅拷贝的区别介绍
    首先,我们知道 Python 中有6个标准的数据类型,他们又分为可以变和不可变。不可变:Number(数字)、String(字符串)、Tuple(元组)。可以变:List(列表)、D...
    99+
    2022-11-11
  • python深拷贝浅拷贝
    python深拷贝和浅拷贝问题:   什么是深拷贝?     (个人理解)深拷贝就是将原有的数据一模一样的拷贝一份,然后存到另一个地址中,而不是引用地址   什么是浅拷贝?     (个人理解)就是引用地址 (1)用等于号的拷贝都属于浅拷...
    99+
    2023-01-30
    python
  • Python中的深拷贝浅拷贝
    什么是浅拷贝,什么是深拷贝? 一、浅拷贝 浅拷贝就是:拷贝了引用,并没有拷贝内容,和在Linux中的硬链接有些类似,在python中,使用=赋值的动作就是一个浅拷贝 浅拷贝中的新旧对象,共用一个内存地...
    99+
    2023-09-08
    python 开发语言
  • Python深拷贝和浅拷贝有什么区别
    这篇“Python深拷贝和浅拷贝有什么区别”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python深拷贝和浅拷贝有什么区别...
    99+
    2023-07-02
  • Python中浅拷贝和深拷贝的区别总结与
    单层浅拷贝 import copy a = 1 # 不可变数据类型 copy_a = copy.copy(a) print(id(a),id(copy_a)) # 内存地址相同 a = [1,2] # 可变数据类型 copy_a ...
    99+
    2023-01-30
    区别 和深 Python
  • python中深拷贝和浅拷贝的区别是什么
    python中深拷贝和浅拷贝的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。先深拷贝和浅拷贝都是对象的拷贝,都会生成一个看起来相同的对象,他们本质的区别是拷贝出来的对...
    99+
    2023-06-19
  • python深拷贝与浅拷贝
    可变对象与不可变对象 要理解深拷贝和浅拷贝,首先要理解可变对象和不可变对象。 不可变对象:该对象所指向的内存中的值不能被改变,修改对象的值时,由于其指向的值不能被改变,因此实际上是在内存中重新开辟一个地址用来存储新的值,然后将对象指向这个...
    99+
    2023-01-30
    python
  • python浅拷贝和深拷贝
    python中的赋值是按引用来传递的,如果不是赋值而是拷贝,那就需要用到copy模块了,这就不得不谈浅拷贝和深拷贝了。   浅拷贝copy()   #!/usr/bin/python  import copy  class MyClass:...
    99+
    2023-01-31
    和深 python
  • Java中深拷贝,浅拷贝与引用拷贝的区别详解
    目录引用拷贝浅拷贝深拷贝小结引用拷贝 引用拷贝: 引用拷贝不会在堆上创建一个新的对象,只 会在栈上生成一个新的引用地址,最终指向依然是堆上的同一个对象。 //实体类 public c...
    99+
    2022-11-13
  • Java对象复制(直接赋值,浅拷贝,深拷贝)
    目录 Java对象复制1,直接赋值2,浅拷贝3,深拷贝4,序列化拷贝 Java对象复制 将一个对象的引用复制给另一个对象,一共有三种方式。第一种是直接赋值,第二种方式是浅拷贝,第三种是...
    99+
    2023-08-31
    java
  • 图解Python中浅拷贝copy()和深拷贝deepcopy()的区别
    关于浅拷贝和深拷贝想必大家在学习中遇到很多次,这也是面试中常常被问到的问题,借由这个时间,整理一下浅拷贝和深拷贝的关系 先从一个简单的例子入手吧 定义一个数组的嵌套结构 a = [1...
    99+
    2023-05-19
    Python 浅拷贝copy() Python 深拷贝deepcopy()
  • python之浅拷贝与深拷贝
    浅拷贝是对于一个对象的顶层拷贝通俗的理解是:拷贝了引用,并没有拷贝内容 In [10]: a = [11,22,33] In [11]: b = a In [12]: id(a) Out[12]: 140343572333832 I...
    99+
    2023-01-31
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作