首页 > 编程语言 > 详细

python直接赋值、浅拷贝和深度拷贝

时间:2020-11-29 23:05:55      阅读:29      评论:0      收藏:0      [点我收藏+]
  • 直接赋值:其实就是对象的引用(别名)。

  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。

  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

 

一、字典浅拷贝

a = {1:[1,2,3]}
b = a.copy()

print("a:",a)   # 输出:a: {1: [1, 2, 3]}
print("b:",b)   # 输出:b: {1: [1, 2, 3]}

a[1].append(4)
print("a:",a)   # 输出:a: {1: [1, 2, 3,4]}
print("b:",b)   # 输出:b: {1: [1, 2, 3,4]}

 

二、深度拷贝

深度拷贝需要引入copy模块

import copy
a = {1:[1,2,3]}
c = copy.deepcopy(a)

print("a:",a)   # 输出:a: {1: [1, 2, 3]}
print("c:",c)   # 输出:b: {1: [1, 2, 3]}

a[1].append(5)
print("a:",a)   # 输出:a: {1: [1, 2, 3,5]}
print("c:",c)   # 输出:b: {1: [1, 2, 3]}

 

三、说明

1、b = a :赋值引用,a 和 b 都指向一个值;

技术分享图片

 

2、b = a.copy() : 浅拷贝,a 和 b 是一个独立的对象,但他们的子对象还是指向同意对象(是引用)。

技术分享图片

 

 

3、b = copy.deepcopy(a) : 深度拷贝,a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的

技术分享图片

 

python直接赋值、浅拷贝和深度拷贝

原文:https://www.cnblogs.com/caiyongjiesmile/p/14057261.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!