Python高级笔记(二) -- 深拷贝和浅拷贝

时间:2021-02-11 19:54:04

1. 深拷贝

1.1 类型1

Python高级笔记(二) -- 深拷贝和浅拷贝 

Python高级笔记(二) -- 深拷贝和浅拷贝

注意: d没有改变, 因为d所拷贝的数据没有改变, 而是c往后添加数据。

1.2 类型2: 元组

如果copy.copy拷贝的是元组是深拷贝! 不会进行浅拷贝, 仅仅是指向, 因为元组是不可变类型, 因此用copy.copy的时候会自动判断.

Python高级笔记(二) -- 深拷贝和浅拷贝

2. 浅拷贝

2.1 类型1

Python高级笔记(二) -- 深拷贝和浅拷贝

2.2 类型2

  • 如果 用copy.copy, copy.deepcopy对一个全部是不可变类型的数据进行拷贝, 那么他们结果相同, 都是引用指向

  • 如果 拷贝的一个拥有 可变类型的数据, 即使元组是最顶层, 那么 deepcopy依然是 深拷贝, 而 copy.copy还是指向.

Python高级笔记(二) -- 深拷贝和浅拷贝

2.3 类型3: 切片是浅拷贝

2.4 类型4: 字典是浅拷贝

  • 字典无序, 每一个key都通过哈希来得到

  • 他们的value的值并不在字典里存放, 而是存放着引用 !

 Python高级笔记(二) -- 深拷贝和浅拷贝

2.5 类型5: 函数的形参是列表(浅拷贝)

Python高级笔记(二) -- 深拷贝和浅拷贝

如果参数传入的是deepcopy, 则产生的是深拷贝, 列表里不会对参数产生修改

Python高级笔记(二) -- 深拷贝和浅拷贝