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

网站推广优化排名seo网站模板网站

网站推广优化排名seo,网站模板网站,wordpress find,网络计划的优化目录 1. 概念简介 1.1 浅拷贝(shallow copy) 1.2 深拷贝(deep copy) 3. 不同类型拷贝行为总结 4. 元组中包含可变对象的特殊情况 5. 何时使用浅拷贝或深拷贝? 6. 重要提醒 1. 概念简介 1.1 浅拷贝(s…

目录

1. 概念简介

1.1 浅拷贝(shallow copy)

1.2 深拷贝(deep copy)

3. 不同类型拷贝行为总结

4. 元组中包含可变对象的特殊情况

5. 何时使用浅拷贝或深拷贝?

6. 重要提醒


1. 概念简介

1.1 浅拷贝(shallow copy)

  • 定义:复制最外层对象,但内部元素(子对象)仍然是原对象中元素的引用(地址共享)。
  • 表现
    • 不可变对象(如整数、字符串、元组等)浅拷贝不会创建新对象,拷贝后对象和原对象指向同一个内存地址(id相同)。
    • 可变对象(如列表、字典、集合等)浅拷贝会创建一个新的最外层对象(id不同),但内部元素的引用是共享的(id相同)。
  • 代码示例:
import copy# 不可变对象:整数列表中的元组
immutable_obj = (1, 2, 3)
immutable_obj_shallow = copy.copy(immutable_obj)
print(f"id(immutable_obj): {id(immutable_obj)}")
print(f"id(immutable_obj_shallow): {id(immutable_obj_shallow)}")  # id相同# 可变对象:列表包含列表
mutable_obj = [1, 2, [3, 4]]
mutable_obj_shallow = copy.copy(mutable_obj)
print(f"id(mutable_obj): {id(mutable_obj)}")
print(f"id(mutable_obj_shallow): {id(mutable_obj_shallow)}")  # id不同,外层对象新建print(f"id(mutable_obj[2]): {id(mutable_obj[2])}")
print(f"id(mutable_obj_shallow[2]): {id(mutable_obj_shallow[2])}")  # 内部列表引用相同

解析:

  • 对于不可变元组,浅拷贝后id相同,说明没有创建新对象。
  • 对于可变列表,浅拷贝创建了新的外层列表(id不同),但内部的子列表仍然是共享的(id相同),修改内部子列表会影响原对象。

1.2 深拷贝(deep copy)

  • 定义:递归复制最外层对象及其所有子对象,生成一个完全独立的新对象。
  • 表现
    • 不论可变或不可变,深拷贝都会创建新的最外层对象(但对纯不可变对象,通常复用内存不创建新对象)。
    • 对于可变子对象,深拷贝会递归复制,子对象的id与原对象不同,完全独立。
    • 对于不可变子对象,Python通常复用内存,不会重复创建。
  • 代码示例:
import copy# 不可变对象:简单元组
immutable_obj = (1, 2, 3)
immutable_obj_deep = copy.deepcopy(immutable_obj)
print(f"id(immutable_obj): {id(immutable_obj)}")
print(f"id(immutable_obj_deep): {id(immutable_obj_deep)}")  # id相同,未创建新对象# 可变对象:列表包含列表
mutable_obj = [1, 2, [3, 4]]
mutable_obj_deep = copy.deepcopy(mutable_obj)
print(f"id(mutable_obj): {id(mutable_obj)}")
print(f"id(mutable_obj_deep): {id(mutable_obj_deep)}")  # id不同,外层对象新建print(f"id(mutable_obj[2]): {id(mutable_obj[2])}")
print(f"id(mutable_obj_deep[2]): {id(mutable_obj_deep[2])}")  # 内部列表id不同,递归复制

解析:

  • 对于不可变元组,深拷贝返回原对象本身,没有创建新对象,id相同。
  • 对于可变列表,深拷贝递归复制了所有子对象,包括内层列表,所有对应对象的id都不同,完全独立。

3. 不同类型拷贝行为总结

类型赋值浅拷贝深拷贝
不可变对象引用,id相同不创建新对象,id相同不创建新对象,id相同
可变对象引用,id相同新建外层对象,内部引用共享递归新建所有对象,完全独立
元组(不可变)引用,id相同新建元组对象,内部元素引用共享新建元组对象,内部元素递归复制

4. 元组中包含可变对象的特殊情况

  • 元组本身不可变,浅拷贝会创建新的元组对象(id不同)。
  • 元组内的可变元素(如列表)浅拷贝时不会复制,仍然是共享引用(id相同)。
  • 深拷贝时,元组和其中所有子对象都会被递归复制,子对象id也不同。

5. 何时使用浅拷贝或深拷贝?

情况选择理由选择拷贝类型
对象结构简单,无嵌套或子对象不可变性能开销小,快速复制浅拷贝
对象包含可变的嵌套子对象,需独立修改需要完全独立的对象深拷贝
只需复制最外层对象,内部共享子对象节省内存,避免重复复制浅拷贝
复杂数据结构备份或递归操作防止意外修改原始数据深拷贝

6. 重要提醒

  • 不可变对象的浅拷贝和深拷贝效果相同,Python会复用内存。
  • 浅拷贝不会递归复制内部子对象,修改嵌套的可变子对象会影响原对象。
  • 深拷贝性能开销较大,不必要时避免使用。
http://www.dtcms.com/a/557728.html

相关文章:

  • 有没有专做游戏脚本的网站制造业营销外贸网站建设
  • 电子商务网站开发实践品牌营销的四大策略
  • 量子机器学习框架设计:基于Cirq的变分量子算法实现
  • 怎么查看网站快照现在建站好么
  • 511-Spring AI Alibaba Graph 智能写作助手示例
  • 在局域网建设网站wordpress 旧文章 最新
  • 俄罗斯全面禁止汽油出口对俄、欧、中能源市场的多维影响分析
  • 公司网站建设费用明细表郑州嵌入式培训机构
  • 电力建设网站进不去青岛市黄岛区城市建设局网站
  • 网站赏析案例wordpress get_categories
  • 李秀满携手国际版权机构推进AI音乐公正机制:「创作者应获得合理回报」
  • 1.2 redis7.0.4安装与配置开机自启动
  • 一流的哈尔滨网站建设网站开发概要设计模板
  • 南头专业企业网站建设公司深圳东门新冠
  • 湛江网站开发公司在线网站建设活动
  • 网站loading什么意思哪个网站代做ppt便宜
  • 北京网站开发工程师网站源码带手机版
  • 如何说服别人做网站wordpress 删除 分类存档
  • 北京单页营销型网站网站注册页面
  • 视觉Slam14讲笔记第7讲视觉里程计-特征提取与匹配
  • 站内推广的方法和工具wordpress多站点不同主题
  • LeetCode 面试经典 150_链表_LRU 缓存(66_146_C++_中等)(哈希表 + 双向链表)
  • 海南省建设厅网站深圳办公室装修公司哪家好
  • Android Cursor AI实践技巧
  • 具身导航视角适应性增强!VIL:连续环境视觉语言导航的视角不变学习
  • 如何建立网站网页设计作业下载
  • 珠海科技网站建设广州网站建设规划
  • 酒店和网站对接如何做中园建设银行官方网站
  • 图片画质增强工具:dim2clear - 图画质增强器 v1.2.rar 操作指南
  • Photoshop - Photoshop 工具栏(20)混合器画笔工具