当前位置: 首页 > 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/a/305352.html

相关文章:

  • NAT网络工作原理和NAT类型
  • 2411C++,C++26反射示例
  • flink sql + kafka + mysql 如何构建实时数仓
  • C++单例模式实现
  • Gurobi学术版+Anaconda安装步骤
  • 【Spring】@Autowired与@Resource的区别
  • 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)大型企业管理系统