浅拷贝与深拷贝 C深浅拷贝与Python的区别C分浅拷贝 / 深拷贝是针对堆内存裸指针根源是手动管理内存new/delete不处理会内存重复释放崩溃Python没有指针、不用手动管内存浅 / 深拷贝是针对可变嵌套对象列表、字典、自定义类实例问题不是内存崩溃而是修改一个另一个跟着变。Python的深浅拷贝主要是用来解决两个对象之间相互影响的问题。直接赋值两个变量指向同一个对象(可变对象)修改其中一个会互相影响。# 直接赋值 nums1 [1, 2, 3] nums2 nums1 print(id(nums1))#2217372066944 print(id(nums2))#2217372066944 nums1[2] 99 print(nums1[2])#99创建nums1赋值给nums2。修改nums[3]的值改为99。解决互相影响的问题可以通过浅拷贝和深拷贝来解决。浅拷贝创建一个新的外层容器但内部元素仍然引用原来的对象。#浅拷贝 import copy nums1 [10, 20, 30, 40] #将nums1浅拷贝赋值黑nums2 nums2 copy.copy(nums1) print(id(nums1))#2590498906368 print(id(nums2))#2590499054720 nums2[3] 99 print(nums1[3])#40 print(nums2[3])#99将nums1进行浅拷贝赋值给nums2。将nums2[3]值修改为99并不会影响nums1[3]。浅拷贝存在的问题嵌套的数据(可变对象)仍然是共享的修改嵌套的数据还是会互相影响。import copy nums1 [10, 20, 30, [40, 50]] nums2 copy.copy(nums1) #地址相同 print(id(nums1[3]))#1516985737472 print(id(nums2[3]))#1516985737472 nums2[3][0] 99 print(nums1[3][0])#99将nums2[3][0]的值修改为99。解决浅拷贝存在的问题使用深拷贝。如果修改的是不可变对象不会存在上面的问题因为会在堆上新创建一个不可变对象然后指向它。深拷贝创建一个新的外层容器并对其内部所有的可变对象进行递归赋值。import copy nums1 [10, 20, 30, [40, 50]] nums2 copy.deepcopy(nums1) # 地址不同 print(id(nums1[3]))#2270013186304 print(id(nums2[3]))#2270013995520 nums2[3][0] 99 print(nums1[3][0])#40 print(nums2[3][0])#99将nums1进行深拷贝赋值给nums2。修改nums[3][0]的值为99。备注深拷贝可以彻底消除数据之间的相互影响。深拷贝遇到【不可变对象】不会复制会直接引用。注意点深拷贝只复制可变对象不可变对象会直接引用。元组中如果只包含不可变对象则深拷贝没有效果。import copy nums1 (10, 20, 30, (40, 50)) nums2 copy.deepcopy(nums1) #地址相同 print(id(nums1))#2022183010768 print(id(nums2))#2022183010768 nums3 (10, 20, 30, [40, 50]) nums4 copy.deepcopy(nums3) #地址不同 print(id(nums3))#2022182910320 print(id(nums4))#2022182910160

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/9/29 2:52:50
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/29 2:52:51
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/29 1:29:30
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/9/29 1:39:24
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/28 17:20:49
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/29 2:52:53

日新闻

周新闻