python 追加到字典_Python的深浅拷贝讲解!

本文详细介绍了Python中的深浅拷贝,包括对象、数据类型、赋值、浅拷贝和深拷贝。特别讨论了可变和不可变类型在拷贝过程中的区别,以及元组的拷贝特性。强调了深拷贝会完全复制可变类型的数据,而浅拷贝只复制第一层。
摘要由CSDN通过智能技术生成
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习 ,不错过 Datawhale干货  作者:皮钱超,厦门大学,Datawhale原创作者 本文 约3000字 ,建议 阅读9分钟 审稿人:耿远昊,Datawhale成员,华东师范大学,开源教程《Joyful-Pandas》核心贡献者。

前言

在很多语言中都存在深浅拷贝两种拷贝数据的方式,Python中也不例外。本文中详细介绍了Python中的深浅拷贝的相关知识,文章的内容包含:

  • 对象、数据类型、引用
  • 赋值
  • 浅拷贝
  • 深拷贝
ec6d8cde225052a032d45e21d23ed6e2.png

一、Python对象

我们经常听到:在Python中一切皆对象。其实,说的就是我们在Python中构造的任何数据类型都是一个对象,不管是数字、字符串、字典等常见的数据结构,还是函数,甚至是我们导入的模块等,Python都会把它当做是一个对象来处理。

所有的Python对象都拥有3个属性:

  • 身份
  • 类型

我们看一个简单的例子来理解上面的3个属性:

假设我们声明了一个name变量,通过id、type方法能够查看对象的身份和类型:

8d61d304e46d8c6a42bc8ff28415887a.png

甚至是type本身也是一个对象,它也拥有自己的身份、类型:

928442bd39f3aae7fb6432f105e5c8b7.png

Python中,万物皆对象

二、数据类型

2.1 可变和不可变类型

在Python中,按照更新对象的方式,我们可以将对象分为2大类:可变数据类型不可变数据类型

  • 不可变数据类型:数值、字符串、布尔值。不可变对象就是对象的身份和值都不可变。新创建的对象被关联到原来的变量名,旧对象被丢弃,垃圾回收器会在适当的时机回收这些对象。

  • 可变数据类型:列表、字典、集合。所谓的可变指的是可变对象的值可变,但是身份是不可变的。

首先我们看看不可变对象:

af40df51b7ac28741a682c8846bb9478.png

当我们定义了一个对象str1,给其赋值了“python”,便会在内存中找到一个固定的内存地址来存放;但是,当我们将“python”定义成另一个变量名的时候,我们发现:它在内存中的位置是不变的

55a43b5a53b5190d854008603d95f4fd.png

也就是说,这个变量在计算机内存中的位置是不变的,只是换了一个名字来存放,来看3个实际的例子:

5f112d66905e935b9a93eb0e2fa944f1.png
d144ae824c67d0113c84fc45f3afa7e1.png
7d921afb84baa114c66b1fb25e9d1100.png

以上的例子说明:当我们对字符串、数值型、布尔值的数据改变变量名,并不会影响到数据在内存中的位置。

我们看看可变类型的例子,列表、字典、集合都是一样的效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值