Python 直接赋值、浅拷贝和深度拷贝区别
Python 直接赋值、浅拷贝和深度拷贝区别
转自https://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html
- b = a: 赋值引用,a 和 b 都指向同一个对象。
- b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向同一对象(是引用)
a = {1: [1, 2, 4]}
b = a.copy()
print(a, b)
# 输出: {1: [1, 2, 4]} {1: [1, 2, 4]} a[1].append(4)
print(a, b)
# 输出:{1: [1, 2, 4, 4]} {1: [1, 2, 4, 4]}
# 由于a和b的子对象仍然是指向同一对象,对a的子对象的修改等于对b子对象的修改 a[2] = 'abc'
print(a, b)
# 输出:{1: [1, 2, 4, 4], 2: 'abc'} {1: [1, 2, 4, 4]}b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。
import copy
a = {1: [1, 2, 4]}
c = copy.deepcopy(a)
print(a, c)
# 输出:{1: [1, 2, 4]} {1: [1, 2, 4]}
a[1].append(5)
print(a, c)
# 输出:{1: [1, 2, 4, 5]} {1: [1, 2, 4]}
Python 直接赋值、浅拷贝和深度拷贝区别的更多相关文章
- Python 直接赋值、浅拷贝和深度拷贝全解析
直接赋值:其实就是对象的引用(别名,其实就是一个人今天叫张三 明天叫张狗子的意思).这个人比较自由单身狗嘛 可以恋爱可以分手 就是一个小屌丝. 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的 ...
- python中浅拷贝和深度拷贝的区别
在很多面试题中都会问到浅拷贝跟深度拷贝的区别,前几天一个朋友也问到了我浅拷贝跟深度拷贝到底有什么区别,这里就简单举栗子讲一下两者的区别. 浅拷贝(copy()):拷贝父对象,不会拷贝对象的内部的子对象 ...
- 图解Python的直接赋值与浅拷贝和深度拷贝三者区别
直接赋值:其实就是对象的引用(别名). 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象 ...
- Python 直接赋值、浅拷贝和深度拷贝解析
直接赋值:其实就是对象的引用(别名). 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象 ...
- Python直接赋值、浅拷贝和深度拷贝解析
直接赋值:其实就是对象的引用(别名). 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象 ...
- python中赋值-浅拷贝-深拷贝之间的关系
赋值: 变量的引用,没有拷贝空间 对象之间赋值本质上 是对象之间的引用传递而已.也就是多个对象指向同一个数据空间. 拷贝的对象分两种类型: . 拷贝可变类型 浅拷贝: 只拷贝第一层数据,不关心里面的第 ...
- Perl的浅拷贝和深度拷贝
首先是深.浅拷贝的概念: 浅拷贝:shallow copy,只拷贝第一层的数据.Perl中赋值操作就是浅拷贝 深拷贝:deep copy,递归拷贝所有层次的数据,Perl中Clone模块的clone方 ...
- python直接赋值,浅拷贝和深拷贝
本文参考自<Python 直接赋值.浅拷贝和深度拷贝解析> 定义 直接赋值:就是对象的引用(别名) 浅拷贝(copy):拷贝父对象,不拷贝对象内部的子对象 深拷贝(deepcopy):co ...
- C++ 默认拷贝构造函数 深度拷贝和浅拷贝
C++类默认拷贝构造函数的弊端 C++类的中有两个特殊的构造函数,(1)无参构造函数,(2)拷贝构造函数.它们的特殊之处在于: (1) 当类中没有定义任何构造函数时,编译器会默认提供一个无参构造函数且 ...
随机推荐
- 12.Unsafe原子性操作
import sun.misc.Unsafe; /** * JDK8 * JDK 的此jar 包中的 Unsafe 类提供了硬件级别的原子性操作 */ public class UnsafeTest ...
- windows 安装yaml支持和pytest支持等
打开cmd 输入pip install pyyaml #yaml文件支持 输入pip install pytest #pytest框架支持 输入pip install requests ...
- Python自动补全缩写意义
自动补全的变量的类别p:parameter 参数 m:method 方法(类实例方法)调用方式classA aa.method()或者classA().method() c:class 类 v:var ...
- nginx支持webSocket ws请求
服务端webSocket的java配置文件: @Override public void registerStompEndpoints(StompEndpointRegistry registry) ...
- c#将数据导出到excel中
DataTable dt = new BLL.T_Expiry().GetAllList().Tables[0];//查询数据 string FileName = "T_Users.xl ...
- git代码提交步骤
常用的步骤: 1)假如本地想关联git仓库,那么先git init,git remote add origin [git地址] 2)假如是想直接从git仓库拉下来,那么git clone [git地 ...
- kvm无人值守安装centos6
nginx配置 server { listen default_server; server_name _; root /home/iso; # Load configuration files fo ...
- iOS 109个Demo范例
https://github.com/subdigital/nsscreencast 版权声明:本文为博主原创文章,未经博主允许不得转载.
- QTP学习笔记1
1.将变量值写入datatable/ 从datatable中取值赋给变量 DataTable("列名","sheet名") = 变量名 变量名 = DataTa ...
- 20140902 字符串拷贝函数 右旋转字符串 string类的编写
1.strncpy字符串拷贝函数 //strncpy的程序 #include<stdio.h> #include<assert.h> char *strncpy1(char * ...