一.直接赋值
1.就是直接对象的应用(别名)
例子: 可以看到对b的赋值了a的值,但是修改b的值,a的值也会发生变化因为赋 值其实就说应用对象的内存地址,并不是重新开辟新的内存空间进行储存,所以a的值也会发生变化
# 直接赋值
a={1:[1,2,3]}
b=a
a['让我看看']='杰哥不要呀'
print(a)
print(b)
#结果:
{1: [1, 2, 3], '让我看看': '杰哥不要呀'}
{1: [1, 2, 3], '让我看看': '杰哥不要呀'}
二.浅拷贝
1.浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象
例子:使用a.copy()赋值,叫做浅拷贝,对a的键值和操作不会同步,但是a的子对象,就是a[0]的值它还是引用同一个内存地址
#浅拷贝
a={1:[1,2,3]}
b=a.copy()
b['让我看看']='杰哥不要呀'
print(a)
print(b)
print("杰哥杰哥杰哥杰哥杰哥杰哥杰哥杰哥杰哥")
a[1].append("呜呜呜")
print(a)
print(b)
# 结果:
{1: [1, 2, 3]}
{1: [1, 2, 3], '让我看看': '杰哥不要呀'}
杰哥杰哥杰哥杰哥杰哥杰哥杰哥杰哥杰哥
{1: [1, 2, 3, '呜呜呜']}
{1: [1, 2, 3, '呜呜呜'], '让我看看': '杰哥不要呀'}
三.深拷贝
1.深拷贝(deepcopy):copy 模块的deepcopy 方法,完全拷贝了父对象及子对象
#深拷贝
import copy
a={1:[1,2,3]}
b=copy.deepcopy(a)
b["让我看看"]='杰哥不要呀'
a[1].append(2)
print(a)
print(b)
#结果:
{1: [1, 2, 3, 2]}
{1: [1, 2, 3], '让我看看': '杰哥不要呀'}