7.下面代码运行后,a、b、c、d四个变量的值,描述错误的是? d
import copy
a = [1, 2, 3, 4, ['a', 'b']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append('c')
a == [1,2, 3, 4, ['a', 'b', 'c'], 5]
b == [1,2, 3, 4, ['a', 'b', 'c'], 5]
c == [1,2, 3, 4, ['a', 'b', 'c']]
d == [1,2, 3, 4, ['a', 'b', ‘c’]]
解析:
b=a,只是换了一个名字,a怎么变b就怎么变,
c是浅拷贝,只复制了a的部分值,仍然共用某些值,所以在对a的子对象进行操作时会改变c
d是深拷贝,完全复制了a的所有值,已经完全与a无关,对a的任何操作都不会影响d
首先我们看看看b的情况