1、直接赋值
- 简单来说,直接赋值就是对象的引用(别名)。
1.1、实例
# 1、直接赋值
a = {1: [1,2,3]}
b=a
# 查看a、b在内存的地址
print( 'a = ', id(a) )
print( 'b = ', id(b) )
#输出结果,可以看出他们的地址是一致的。
'''
a = 6909600
b = 6909600
'''
2、浅拷贝
- 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
2.1、浅拷贝实例
a = {1: [1, 2, 3]}
b = a.copy()
a[1].append('c') # 修改对象a中的数组对象
print('a = ', a)
print('b = ', b)
'''
通过输出结果可以看出,虽然a、b并不是独立存在的,修改a后,b中同样做了修改。
a = {1: [1, 2, 3, 'c']}
b = {1: [1, 2, 3, 'c']}
'''
3、深拷贝
- 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
深拷贝是在另一块地址中创建一个新的变量或容器,同时容器内的元素的地址也是新开辟的,仅仅是值相同而已,是完全独立的一个副本。
3.1、深拷贝实例
import copy
a = {1: [1, 2, 3]}
# 深拷贝
b = copy.deepcopy(a)
a[1].append('c') # 修改对象a中的数组对象
print('a = ', a)
print('b = ', b)
'''
通过输出结果可以看出,虽然a、b是独立存在的,a的修改不会影响b
a = {1: [1, 2, 3, 'c']}
b = {1: [1, 2, 3]}
'''