当前位置: 首页 > article >正文

python深拷贝和浅拷贝的实验

浅拷贝(Shallow Copy): 只复制最外层对象,内部对象的引用不变。
深拷贝(Deep Copy): 复制对象及其所有子对象。

浅拷贝会创建一个新对象,然后将原始对象中的所有引用复制到新对象中。这意味着,如果原始对象包含的是不可变类型(如整数、字符串、元组)的属性,那么浅拷贝将复制这些不可变类型的数据;但如果原始对象包含的是可变类型(如列表、字典、集合)的属性,那么浅拷贝将只复制这些可变类型的引用,而不是它们的内容。

深拷贝会创建一个新对象,然后递归地复制原始对象中的所有子对象。这意味着,无论原始对象包含的是不可变类型还是可变类型的属性,深拷贝都会复制它们的内容,而不是引用。

import copy

class MyClass:
    def __init__(self, number, my_list):
        self.number = number
        self.my_list = my_list

# 创建一个自定义对象实例
original_obj = MyClass(10, [1, 2, 3])

# 使用deepcopy()函数进行深拷贝  使用copy.copy()进行浅拷贝
copied_obj = copy.copy(original_obj)

# 修改原始对象中的列表和整数,检查拷贝对象是否受到影响
original_obj.number = 20
original_obj.my_list.append(4)

# 输出结果,验证深拷贝/浅拷贝
print(original_obj.number)   
print(original_obj.my_list) 
print(copied_obj.number)    
print(copied_obj.my_list)   


http://www.kler.cn/news/305352.html

相关文章:

  • python学习第八节:爬虫的初级理解
  • 远程跨境传输大文件如何做到安全又稳定?
  • 使用Selenium进行网页自动化
  • 水平垂直居中的几种方法(总结)
  • 【浅谈】单片机基本概念
  • 在WPF中使用矢量图标
  • 【ArcGISProSDK】初识
  • Vue Router push方法的使用
  • vm虚拟机中ubuntu连不上网络,网络图标消失解决办法
  • 技术成神之路:设计模式(十三)访问者模式
  • 2.1 溪降技术:溪降运动的定义
  • 链路层和交换网_计算机网络
  • vue+el-table 可输入表格使用上下键进行input框切换
  • Qt常用控件——QSpinBox
  • STM32的寄存器深度解析
  • Mysql的高级查询:SQL关联查询(内连接/外连接/自连接)/子查询
  • uni-app和Node.js使用uni-push2.0实现通知栏消息推送功能
  • Centos挂载和删除nfs
  • python选择排序算法
  • 基于Java+Mysql实现(web)大型企业管理系统
  • API安全测试 | Postman + BurpSuite 配置证书代理
  • chapter14-集合——(List)——day17
  • 828华为云征文|部署在线文件管理器 Spacedrive
  • 大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
  • 【LLM多模态】CogVideoX文生视频模型结构和训练过程
  • 【openGauss】检查工具gs_check,gs_checkperf的应用
  • Redisson 异步释放锁
  • 什么是485无线通信
  • 磁盘写操作压力测试工具的设计与实现
  • ChatGLM3模型搭建教程