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

宿州市做网站的公司wordpress logged in

宿州市做网站的公司,wordpress logged in,做预算查价格的网站是哪个,惠州建设银行行号查询网站Python 中的赋值语句不会创建对象的拷贝#xff0c;仅仅只是将名称绑定至一个对象。对于不可变对象#xff0c;通常没什么差别#xff0c;但是处理可变对象或可变对象的集合时#xff0c;你可能需要创建这些对象的 “真实拷贝”#xff0c;也就是在修改创建的拷贝时不改变…Python 中的赋值语句不会创建对象的拷贝仅仅只是将名称绑定至一个对象。对于不可变对象通常没什么差别但是处理可变对象或可变对象的集合时你可能需要创建这些对象的 “真实拷贝”也就是在修改创建的拷贝时不改变原始的对象。本文将以图文方式介绍 Python 中复制或“克隆”对象的操作。首先介绍一下 Python 中浅拷贝与深拷贝的区别浅拷贝浅拷贝意味着构造一个新的集合对象然后用原始对象中找到的子对象的引用来填充它。从本质上讲浅层的复制只有一层的深度。复制过程不会递归因此不会创建子对象本身的副本。深拷贝深拷贝使复制过程递归。这意味着首先构造一个新的集合对象然后递归地用在原始对象中找到的子对象的副本填充它。以这种方式复制一个对象遍历整个对象树以创建原始对象及其所有子对象的完全独立的克隆。赋值与引用在开始浅拷贝与深拷贝前我们先来看一下 Python 中的赋值与引用。lst [1, 2, 3]new_list lst从字面上看上述语句创建了变量 lst 和 new_list并且 lst 和 new_list 的赋值都为一个列表。但是Python 的赋值语句并不会复制对象而是会重新创建一个对象的引用。可以看出lst 和 new_list 都引用了同一个列表。创建浅拷贝不少教程里都会提到如果你有一个列表当你想要修改列表中的值但却不想影响原始对象时可以使用 list 复制(浅拷贝)一个列表。我们先来试一下lst [1, 2, 3]new_list list(lst)没错lst 和 new_list 分别指向了不同的列表。当修改 lst 列表中的值时并不会对 new_list 对象产生影响。lst[0] xprint(lst)print(new_list)[x, 2, 3][1, 2, 3]之所以说 list 语句是浅拷贝是因为这种修改只对一层对象有效当列表中有子对象时对子对象的修改将影响原始对象和浅拷贝对象。为了解释这一说法让我们先创建一个嵌套列表并使用 list 函数创建浅拷贝。lst [[1, 2, 3], [4, 5, 6]]new_list list(lst)这里 new_list 是有着和 lst 一样内容的新的独立的对象。可以看到 lst 和 new_list 分别指向了不同的对象。对第一层 lst 的修改将不会对 new_list 副本造成影响。lst.append([7, 8, 9])print(lst)print(new_list)[[1, 2, 3], [4, 5, 6], [7, 8, 9]][[1, 2, 3], [4, 5, 6]]但是因为我们只创建了原始列表的一个浅拷贝所以 new_list 仍然包含对 lst 中存储的原始子对象的引用。也就是如上图所示lst 和 new_list 的子列表都指向了相同的对象。子对象没有被复制它们只是在复制的列表中被再次引用。因此当你修改 lst 中的一个子对象时这种修改也会反映到 new_list 中—— 这是因为两个列表共享相同的子对象。这种复制只是一个浅的一个层级的复制lst[0][0] xprint(lst)print(new_list)[[x, 2, 3], [4, 5, 6], [7, 8, 9]][[x, 2, 3], [4, 5, 6]]如果我们在第一步中创建了一个 lst 的深拷贝那么两个对象就完全独立了。这是对象的浅拷贝和深拷贝之间的实际区别。使用 Python 标准库中的 copy 模块可以创建深拷贝这个模块为创建任意 Python 对象的浅拷贝和深拷贝提供了一个简单的接口。创建深拷贝这次我们使用 deepcopy() 函数创建一个对象的深拷贝import copylst [[1, 2, 3], [4, 5, 6]]new_list copy.deepcopy(lst)从图中可以看出 lst 和 new_list 中的子对象指向了不同的对象如果对 lst 的子对象进行修改将不会影响 new_list。这一次原始对象和复制对象都是完全独立的。如前面所说递归克隆了 lst包括它的所有子对象lst[0][0] xprint(lst)print(new_list)[[x, 2, 3], [4, 5, 6]][[1, 2, 3], [4, 5, 6]]copy 模块中的 copy.copy() 函数也可以创建对象的浅拷贝。使用 copy.copy() 可以明确地表示创建浅拷贝。对于内置集合简单地使用 list、dict 和 set 等工厂函数来创建浅拷贝是更加 Pythonic 的。复制任意 Python 对象copy.copy() 和 copy.deepcopy() 函数可用于复制任意对象。以前面的列表复制示例为基础。让我们从定义一个简单的 2D 点类开始class Point:def __init__(self, x, y):self.x xself.y ydef __repr__(self):return fPoint({self.x!r}, {self.y!r})__repr__() 函数使我们可以轻松地在 Python 解释器中检查从这个类创建的对象。接下来我们将创建一个 Point 实例然后使用 copy 模块复制(浅拷贝)它a Point(23, 42)b copy.copy(a)print(a is b)Falsea 和 b 分别指向了不同的 Point 实例。因为我们的 Point 对象使用不可变类型(int)作为其坐标所以在这种情况下浅拷贝和深拷贝没有区别。但我马上会展开这个例子。接下来定义另一个类来表示 2D 矩形。矩形将使用 Point 对象来表示它们的坐标class Rectangle:def __init__(self, topleft, bottomright):self.topleft topleftself.bottomright bottomrightdef _repr__(self):return (fRectangle({self.topleft!r}, {self.bottomright!r}))# 创建一个 Rectangle 实例的浅拷贝rect Rectangle(Point(0, 1), Point(5, 6))shallow_rect copy.copy(rect)print(rect)print(shallow_rect)print(rect is shallow_rect)Rectangle(Point(0, 1), Point(5, 6))Rectangle(Point(0, 1), Point(5, 6))False跟前面 list 的例子一样rect 和 shallow_rect 的子对象都有相同的引用。在对象层级中修改一个对象将看到这个变化也反映在浅拷贝的副本中rect.topleft.x 999print(rect)print(shallow_rect)Rectangle(Point(999, 1), Point(5, 6))Rectangle(Point(999, 1), Point(5, 6))接下来创建 Rectangle 的深拷贝并对其进行修改deep_rect copy.deepcopy(rect)deep_rect.topleft.x 222print(rect)print(shallow_rect)print(deep_rect)Rectangle(Point(999, 1), Point(5, 6))Rectangle(Point(999, 1), Point(5, 6))Rectangle(Point(222, 1), Point(5, 6))可以看出深拷贝完全独立于原始对象和浅拷贝对象。参阅 copy 模块文档 可以对复制进行进一步的研究。例如对象可以通过定义特殊的方法 __copy__() 和 __deepcopy__() 来控制如何复制它们。谨记三件事创建对象的浅拷贝不会克隆子对象。因此拷贝不会完全独立于原始对象。一个对象的深拷贝会递归地克隆子对象。克隆对象完全独立于原始对象但是创建深拷贝速度较慢。可以使用 copy 模块复制任意对象(包括自定义类)。
http://www.pierceye.com/news/747032/

相关文章:

  • 网站建设 版权归属重庆建设监理协会网站
  • 游戏网站域名相城区网站建设
  • 很看好未来做生鲜的网站邢台做外贸网站
  • 网站首页点击中文英文链接 翻译成对应的语言 怎么做100种创意活动策划
  • 网站标题怎么设置小程序定制程序
  • discuz 网站搬家网站建设的工具
  • 有做国际网站生意吗做网站义乌
  • 网站开发技术可行性分析怎么写孝感建设公司网站
  • 灯塔网站建设有网站源码怎么做网站
  • 网站设计方案策划德国的网站后缀
  • 可以自己做网站卖东西wordpress标签静态
  • 典当行 网站威海网站推广
  • 佛山市住房建设局网站网站开发业务ppt
  • 页面结构和页面设计优化措施二十条
  • 做网站程序怎么写wordpress漂浮表单
  • 企业网站要怎么建设网站建设 工具
  • wordpress 邮箱激活宁波营销型网站建设优化建站
  • 婚纱网站页面设计广州网站建设推广公司有哪些
  • 网站制作报价大约建设模式有哪些
  • 公司邮箱怎么注册流程如何优化关键词提升相关度
  • 网站建议方案app代运营
  • 北京建机官网查询台州seo全网营销
  • 网站建设书店用户分几类网站建设项目采购公告
  • 如何做企业网站宣传wordpress站内搜索次数
  • 加盟招商推广网站如何做品牌运营与推广
  • 网站做分布式部署湖南平台网站建设设计
  • 沈阳市建设工程项目管理中心网站网络项目网
  • 沈阳网站建设成创输入网址跳到别的网站
  • 课程网站开发建设商务网站的费用
  • 资讯网站优化排名wordpress 删除所有文章