Python之深浅拷贝

时间:2022-04-04 19:48:55

数字和字符串

对于数字 字符串而言,赋值、浅拷贝、深拷贝无意义,因为永远指向同一内存地址

 1 import copy
 2 #定义变量   数字、字符串
 3 n1 = 123
 4 #n1 = 'nick'
 5 print(id(n1))
 6  
 7 #赋值
 8 n2 = n1
 9 print(id(n2))
10  
11 #浅拷贝
12 n3 = copy.copy(n1)
13 print(id(n3))
14  
15 #深拷贝
16 n4 = copy.deepcopy(n1)
17 print(id(n4))

Python之深浅拷贝

 字典、元组。列表

对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。

1、赋值

创建一个变量该变量指向原来内存地址

1 n1 = {"k1": "nick", "k2": 123, "k3": ["jenny", 666]}
2 n2 = n1

Python之深浅拷贝

2、浅拷贝

在内存中只额外创建第一层数据

1 import copy
2    
3 n1 = {"k1": "nick", "k2": 123, "k3": ["jenny", 666]}
4 n2 = copy.copy(n1)

Python之深浅拷贝

3、深拷贝

在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)

1 import copy
2    
3 n1 = {"k1": "nick", "k2": 123, "k3": ["jenny", 666]}
4 n2 = copy.deepcopy(n1)

Python之深浅拷贝