【Python】直接赋值,浅拷贝与深拷贝

208 阅读1分钟

直接赋值

对象的引用(别名),被引用的变量修改会导致引用它的变量也进行修改(实际上是同一个对象)

# 直接赋值
a = {1:[1,2]}
b = a
a,b
a[1].append(3)
a,b
({1: [1, 2, 3]}, {1: [1, 2, 3]})

浅拷贝

拷贝父对象,不会拷贝子对象

# 浅拷贝
import copy
a = [[1,2,3],['a','b','c']]
b = copy.copy(a)
a,b
a.append('qwe')
a,b
([[1, 2, 3], ['a', 'b', 'c'], 'qwe'], [[1, 2, 3], ['a', 'b', 'c']])

深拷贝

创建一个与被拷贝的对象完全相同的对象

# 深拷贝
import copy
a = {1:[1,2,3,4]}
c = copy.deepcopy(a)
a,c
a[1].append(5)
a,c
({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})