引用
-
在python中,值是靠引用来传递来的。
-
我们可以用id()来判断两个变量是否为同一个值的引用。
-
上图:引用就是上边的这三个变量指向了同一个内存的地址。
可变类型和不可变类型
- 可变类型(修改数据,内存地址不会发生变化)有: 列表、字典、集合
- 不可变类型(修改数据,内存地址必定发生变化)有: 数字、字符串、元组
引用与拷贝之间的区别
列表是怎么存数据的
- 其实列表存的并不是真正的数据,存的只是数据的地址。
深拷贝与浅拷贝的区别
简单理解
浅拷贝:快捷方式
深拷贝:ctrl + c, ctrl + v
深拷贝
- 就是递归所有的数据进行重新创建 。
- 作用:保证数据的独立性。
- 缺点:比较占内存。
浅拷贝
- 最外层的结构复制创建,里面的数据还是引用原先的数据,类似于快捷方式。
深浅拷贝的特殊情况
- 不可变类型不管是什么拷贝都是引用
- 常用的api基本上都是浅拷贝(省内存嘛)
再理解下
- 深拷贝:主要目的就是保证数据的独立性
如果全部都是不可变类型,那么深拷贝就没有必要取复制一份,
如果中间有一个数据是可变的,那就没办法保证数据的独立性,
工作中不会这么写。