Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块。
1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。通俗点就是部分拷贝
2. copy.deepcopy 深拷贝 拷贝对象及其子对象,通俗点就是完全拷贝
1 a = ["1","2","3",['a','b']]
2 b = a #引用
3
4 c=copy.copy(a)#浅拷贝
5
6 d = copy.deepcopy(a) #深度拷贝
7
8 a.remove("1")
9 a[2].append('c')
10
11 print a
12 print b
13 print c
14 print c
15
16 运行结果:
17 ['2', '3', ['a', 'b', 'c']]
18 ['2', '3', ['a', 'b', 'c']]
19 ['1', '2', '3', ['a', 'b', 'c']]
20 ['1', '2', '3', ['a', 'b']]
2 b = a #引用
3
4 c=copy.copy(a)#浅拷贝
5
6 d = copy.deepcopy(a) #深度拷贝
7
8 a.remove("1")
9 a[2].append('c')
10
11 print a
12 print b
13 print c
14 print c
15
16 运行结果:
17 ['2', '3', ['a', 'b', 'c']]
18 ['2', '3', ['a', 'b', 'c']]
19 ['1', '2', '3', ['a', 'b', 'c']]
20 ['1', '2', '3', ['a', 'b']]
我们可以看到,与c语言不同的是,=后不是两个不同的值,而是一个引用的值。要注意。。