Python高级编程-深拷贝与浅拷贝

Python核心机制与实战技巧:从变量作用域到GIL的深度解析 在Python编程中,掌握核心机制与高级技巧是编写高效代码的关键。本文将围绕变量作用域、深拷贝与浅拷贝、单元测试、GIL、自省机制、算法实现及垃圾回收等核心知识点展开,结合实战案例与最佳实践,助你突破技术瓶颈。 阅读详情

1. ==,is的使用

这里写图片描述

这里写图片描述
总结:
 • is 是比较两个引用是否指向了同一个对象(引用比较)。
 • == 是比较两个对象是否相等。

2. 浅拷贝、深拷贝

python中的深拷贝和浅拷贝和java里面的概念是一样的,所谓浅拷贝就是对引用的拷贝,所谓深拷贝就是对对象的资源的拷贝。
首先,对赋值操作我们要有以下认识:
 1.赋值是将一个对象的地址赋值给一个变量,让变量指向该地址( 旧瓶装旧酒 )。
 2.修改不可变对象(str、tuple)需要开辟新的空间
 3.修改可变对象(list等)不需要开辟新的空间

2.1浅拷贝

浅拷贝是对于一个对象的顶层拷贝,仅仅复制了容器中元素的地址
通俗的理解是:拷贝了引用,并没有拷贝内容
这里写图片描述
这里写图片描述
总结:
 浅拷贝是在另一块地址中创建一个新的变量或容器,但是容器内的元素的地址均是源对象的元素的地址的拷贝。也就是说新的容器中指向了旧的元素( 新瓶装旧酒 )。

2.2 深拷贝

深拷贝是对于一个对象所有层次的拷贝(递归),完全拷贝了一个副本,容器内部元素地址都不一样
这里写图片描述

这里写图片描述
总结:
 深拷贝是在另一块地址中创建一个新的变量或容器,同时容器内的元素的地址也是新开辟的,仅仅是值相同而已,是完全的副本。也就是说( 新瓶装新酒 )。
 

2.3 拷贝的其他方式

浅拷贝对不可变类型和可变类型的copy不同
●对于列表[]来说:

import copy
a = [11,22,33]
b = copy.copy(a)
print(b)
print(id(a),id(b))

a.append(44)
print(a)
print(b)

运行结果:
这里写图片描述

●对于元组()来说:

import copy
a = (11,22,33)
b = copy.copy(a)
print(b)
print(id(a),id(b))

运行结果:
这里写图片描述

对字典{}来说:

a=dict(name="zhangsan",age=27)
b=a.copy()
print(b)
print(id(a),id(b))

运行结果:
这里写图片描述

• 分片表达式可以赋值一个序列

a='abc'
b=a[:]
print(b)
#b='abc'

• 有些内置函数可以生成拷贝(list)

a = list(range(10))
b = list(a)
print(a)
print(b)
print(id(a),id(b))

运行结果:
这里写图片描述

掌握Python列表的高级操作与陷阱避免 本章节深入探讨了Python中列表的特性,包括对象与值的相等性、别名、可变性以及其带来的编程陷阱。同时介绍了列表的克隆、列表推导、高阶操作等高级特性,并强调了使用时需要注意的细节。通过一系列实例展示了如何高效且安全地操作列表,避免常见的编程错误。 阅读详情

相关推荐

从零开始:H20服务器上DeepSeek R1 671B大模型部署与压力测试全攻略

最近,我有幸在工作中接触到了DeepSeek R1 671B模型,这是目前中文开源领域参数量最大的高质量模型之一。DeepSeek团队在2024年推出的这款模型,以其惊人的6710亿参数量和出色的推理性能,引起了业界广泛关注。作为一名AI基础设施工程师,我有机会在H20服务器上部署这个庞然大物,并对其进行了全面的压力测试。这篇文章将详细记录我的部署过程和性能测试方法,希望能为大家提供一些参考。💡为什么选择DeepSeek R1?超大规模参数量(671B)优秀的中英文理解能力开源可商用的许可证。

wangli的博客 1万+

python高级编程之深拷贝与浅拷贝

python高级编程之深拷贝与浅拷贝 1. 浅拷贝: 浅拷贝是对于一个对象的顶层拷贝。简单理解:拷贝了引用,并没有拷贝内容 2. 深拷贝: 深拷贝是对于一个对象所有层次的拷贝(递归) 3. copy copy.copy 完成浅拷贝 copy.deepcopy完成深拷贝 -=表示指向引用 4. copy.copy copy.copy对于可变类型,会进行浅拷贝 copy.copy对于不可变类型(元组),不会拷贝,仅仅是指向 5. 引用还是指向 如果用copy.copy、copy.deepcopy对一

weixin_45912307的博客 267

保姆级教程:用Labelme标注车辆关键点,并一键转成YOLOv8-pose训练格式

本文提供了一份详细的车辆底盘关键点标注教程,从使用Labelme进行标注到一键转换为YOLOv8-pose训练格式的全流程指南。特别针对工业检测和自动驾驶场景,分享了标注规范、格式转换脚本及常见问题解决方案,帮助开发者高效准备训练数据并优化模型性能。

weixin_27419879的博客 306

Python高级编程(10):深拷贝与浅拷贝

一、深拷贝和浅拷贝概念 浅拷贝:重新分配一块内存,创建一个新的对象,拷贝父对象,不会拷贝对象内部的子对象。 深拷贝:重新分配一块内存,创建一个新的对象,完全拷贝父对象和子对象,新对象和原对象没有任何关联。 1.1 简单来说: 浅拷贝只复制某个对象的引用,而不复制对象本身,新旧对象还是共享同一块内存。 深拷贝会创造一个一模一样的对象,新对象和原对象不共享内存,修改新对象不会改变原对对象。 1.2 深浅拷贝优缺点: 深拷贝是将原数据复制到新的内存空间中,改变拷贝后的内容不影响原数据内容,但是深拷贝耗时

qq_23440467的博客 273

安卓游戏存档修改全攻略:以《英雄迷宫冒险》为例(附避坑指南)

本文详细介绍了安卓游戏存档修改的全过程,以《英雄迷宫冒险》为例,涵盖基础认知、工具选择、实战修改及风险控制。通过十六进制编辑和UTF-8编码解析,玩家可以修改金钱、角色属性和物品数量等数据,同时提供了避坑指南和伦理考量,帮助玩家在享受修改乐趣的同时保持游戏体验的平衡。

weixin_29209801的博客 392

UE5 Paper2D性能优化:GroupedSpriteSceneProxy合批渲染原理与实践

在游戏开发中,渲染性能优化是核心技术挑战之一,其核心原理在于减少CPU与GPU之间的通信开销,特别是降低Draw Call数量。Draw Call是CPU向GPU提交绘制命令的指令,每次调用都涉及状态切换和数据传输,当场景中存在大量同质化对象时,频繁的Draw Call会成为主要性能瓶颈。为此,现代图形引擎普遍采用合批渲染技术,其技术价值在于将多个共享相同渲染状态(如材质、几何体)的物体数据合并提交,从而将多次Draw Call压缩为一次或少数几次,显著提升渲染效率。这一技术在2D游戏开发中尤为重要,例如在

weixin_34198453的博客 394

python 高级编程____包与模块__== 与 is__深拷贝与浅拷贝

1.再学–包,模块 包(lib)、模块(module) 在 Python 中,存在包和模块两个常见概念。 模块:编写 Python 代码的 py 文件 包:用来分门别类存放模块代码的文件夹,【一般存在一个__init__.py 文件】 模块的几种导入方式: init.py 文件: __all__变量的使用: init.py 文件中导入其他模块文件,推荐使用 from . import xxx**....

L同学的博客 155

四旋翼滑模控制:从理论到Simulink实现

本文深入探讨了四旋翼滑模控制的理论与Simulink实现,对比了其相较于PID控制在抗干扰和鲁棒性方面的显著优势。文章详细介绍了从精确动力学建模、内外环滑模控制器设计到指令解算的完整流程,并分享了Simulink仿真搭建、参数调试及抗扰性能验证的实战经验,帮助工程师掌握在复杂环境下提升四旋翼稳定性的进阶技能。

weixin_29163581的博客 375

python高级相关操作

python高级的相关操作 模块的重新导入 # test.py模块 def test(): print("----1----") print("----2----") # 主文件 import sys #这是模块的查找路径 sys.path #这是个变量 是个列表 可以用列表的操作 sys.path.append('/home') #添加模块的搜索路径 print...

xiao-啸 382

别再只用固定线了!聊聊Android车机‘快速倒车’与‘正常倒车’的UI与数据流核心差异(附动态轨迹线实现原理)

本文深度解析Android车机中快速倒车与正常倒车的核心差异,探讨从内核级视频流水线到动态轨迹线的技术实现。快速倒车通过内核直接操作FrameBuffer实现2秒内响应,而正常倒车则支持多传感器数据融合与动态UI元素。文章还分享了动态轨迹线的算法实现与性能优化技巧,帮助开发者打造极致的倒车体验。

weixin_42550597的博客 253

Python 爬虫进阶技巧:定时爬虫任务实现无人值守采集

常规爬虫多依赖手动触发脚本运行,单次采集完成后需人工二次启动,无法满足日常周期性数据监控、行情抓取、资讯同步、业务台账定时归档等常态化采集需求。搭建可自主调度、自动启停、周期循环的定时爬虫任务,脱离人工干预实现无人值守全自动采集,是爬虫从临时脚本走向工程化落地的关键一步。schedule 轻量定时库官方文档APScheduler 高级定时框架官方文档Python time 内置模块官方文档Linux crontab 定时任务官方手册。

2503_91057718的博客 1117

python高级编程之03可变对象与不可变对象的浅拷贝与深拷贝以及`+=`与`+`的区别

前言 Python表达式中i += x和i = i +x是否等价?一般理解它们是等价的,整数操作时候它们没有什么区别,但对于列表操作,就大为不同了,先看一段代码 l1 = list(range(3)) l2 = l1 l2 += [3] print("l1=", l1) print("l2=", l2) 输出: l1= [0, 1, 2, 3] l2= [0, 1, 2, 3] l1...

飞翔的荷兰人 582

Qt5.15.7编译报错问题汇总:python2安装环境导致的问题

导致编译生成的:RegExpJitTables.h文件大小为0。RegExpJitTables.h 能生成且大小不为0KB。可以看到,正确的python路径,执行编译路径后。再执行 configure XXX…尝试直接改,将其改为正确的路径。

MusicScore的博客 1439

python高级编程有哪些内容,python高级编程第二版pdf

大家好,小编来为大家解答以下问题,python高级编程有哪些内容,python高级编程第二版pdf,今天让我们一起来看看吧!

Bxwfjdjdbdgj的博客 899

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

学习笔记之--GIL、深拷贝和浅拷贝、装饰器

python 提高 1.GIL 全局解释锁,Cpython遗留问题,保证线程执行的时间片内只有一个线程在执行,在遇到耗时的IO操作是会暂时释放该锁,让其他线程执行。这样也能提升执行效率。 2.深拷贝和浅拷贝:简单来说浅拷贝是拷贝指向,深拷贝是完全拷贝内容。 假如: a = [1,2] b= [3,4] c = [a,b] d = copy.copy(c) 在上面这个程序段中,是一个浅拷贝,d会拷贝c中指向的变量所指向的内存位置。 假如是深拷贝的话: a = [1,2] b= [3,4] c = [a,b]

an1224545169的博客 221

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

python2

Python2.8 内置模块2.8.1 math 模块2.8.2 random 模块(产生随机数)2.8.3 os模块2.8.4 os.path 模块2.8.5 sys模块2.8.6 UUID 模块2.8.7 时间模块 time2.8.7.12.8.7.3 datetime模块2.8.7.2 calend模块2.8.8 加密模块2.8.8.1 hashlib模块2.8.8.2 hmac模块2.9 IO流及其对象序列化2.9.1 IO流2.9.1.1 什么是IO流2.9.1.2 流的分类2.9.2 字符流2.

小李同学的博客 934

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python基础学习之地址,深拷贝,浅拷贝,装饰器,迭代器,生成器,闭包/day7下午

a=3 b=3 print(id(a)==id(b))    #True c=3 d=c print(id(c)==id(d))     #True a=[1,2,3] b=[1,2,3] print(a==b)               #True print(id(a))              #43671368 print(id(b))              #43671432...

qq_39112101的博客 1059

Python高级用法:索引和切片

大家好,我是老马的程序人生~ Python语言语法简洁,易于上手,但当你深入研究时,会发现Python有很多高级用法,这些高级用法可以大幅度提高代码的可读性和运行效率。 下面介绍Python的高级用法之一:索引与切片。 在Python中,获取列表的元素不仅可以使用索引,还可以使用切片操作。 索引: 通过元素的索引值,从列表获取单个元素,注意,列表索引值是从0开始的。 通过将索引指定为-1,可让Python返回最后一个列表元素,索引 -2 返回倒数第二个列表元素,以此类推。 【例子】 x = ['Mond

老马的程序人生 5368

python学徒,Python进程路径-从学徒到大师

了解(更深入地)Python的数据类型及其在内存管理方面的作用正如社区中的一些人所知,I teach Python courses,最受欢迎的课程是综合介绍+中级课程以及介绍各种应用程序开发领域的“高级”课程。经常有人问我一个类似的问题:“我应该上你的入门课还是高级课程?”?我已经为Python编程1-2年了,我认为简介对我来说太简单了,所以我想直接跳到高级。。。你会推荐哪门课?”为了回答他们的问...

weixin_28751115的博客 185

Python高级语法

最近重新看了网上的python教程,补充学习了一些之前用的较少的用法   字典 注意字典中 key 是乱序的,也就是说和插入 的顺序是不一致的。如果想要使用顺序一致的字典,请使用 collections 模块 中的 OrderedDict 对象   迭代器 Python 中的 for 句法实际上实现了设计模式中的迭代器模式 ,所以我们自己也可以按照迭代器的要求自己生成迭代器对象,以便在...

The Best or Nothing. 446

2020 年 Python 知识清单(基础知识)

整理了一份Python开发技术学习清单,主要来自2020年1月1日前Python中文社区往期文章,本期收录的是基础知识相关的知识点。深度解读Python深拷贝与浅拷贝问题用Python帮...

Python中文社区 710

Python编写代码有哪些常见的坑

Python 是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的库支持而受到欢迎。然而,在使用 Python 编程时,开发者可能会遇到一些常见的“坑”或问题。了解这些问题并采取适当的措施可以帮助避免它们,提高代码的可读性、效率和安全性。

sinat_41883985的博客 1586

纯粹的分享 | Python的面试题目+答案合集

各位宝贝上午好鸭,大家这段时间在找工作了嘛?作为一个 Python 新手,你必须熟悉基础知识。在本期内容中我们将讨论一些 Python 面试的基础问题和高级问题以及答案,以帮助你完成面试,包括 Python 开发问题、编程问题、数据结构问题、和 Python 脚本问题,接下来让我们来深入研究这些问题。

DEVELOPERAA的博客 158

Python 高级知识点总结

Python 高级知识点总结 原文地址:Python 高级知识点总结 一、可迭代对象,迭代器对象和生成器 像list,tuple等这些序列是可以使用for…in…语句进行遍历输出的。这是为什么呢?这就要需要知道可迭代对象(Iterable),迭代器对象(Iterator)和生成器对象(Genertor)。 1、什么是可迭代对象? 把可以通过for…in…这类语句迭代读取一条数据提供我们使用的对象。 2、可迭代对象的本质? 可迭代对象通过__iter__方法向我们提供一个迭代器,我们在迭代一个可迭代对象的时

雨夜的博客 540

Python面试一网打尽

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、Python装饰器、迭代器、生成器二、Python中的深拷贝和浅拷贝二、Python的可变和不可变类型总结 前言 本文对Python相关面试问题做一个总结,并将答案贴出,持续更新。 提示:以下是本篇文章正文内容,下面案例可供参考 一、Python装饰器、迭代器、生成器

个人记录使用 420

以后可得记住了--Python笔试面试题小结

1.字符串处理   将字符串中的数字替换成其两倍的值,例如: 修改前:"AS7G123m (d)F77k" 修改后:"AS14G246m (d)F154k"   个人思路:先用正则表达式将其中的数字匹配出来进行乘2操作,然后将字符串根据其中的数字进行切割,得到一个字符列表,最终将乘以2后的数字和原有的字符进行拼接得到最后的结果。(我脑子比较笨,想不到别的,如果您有更好更...

weixin_30668887的博客 131
上一篇: Python-模块
下一篇: Python高级编程--闭包与装饰器
rongtingYan
博客等级 码龄10年 9粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值