[Python]直接赋值、深拷贝、浅拷贝
以例示意
// python
import copy //引入 copy 模块
a = [1, 2, [1, 2]] //定义a
b = a //"="为直接赋值,a、b共用一个地址
c = copy.copy(a) //浅拷贝---这里引用copy模块的copy函数进行拷贝
//浅拷贝相当于在同一个地址(a)上进行贴标签(c)操作
//地址不变,标签增加 (a和c)
d = [ : ] //与copy.copy()意义相同
e = copy.deepcopy(a) //深拷贝,新建一个地址,且该地址包含的内容
//与离它最近的a地址内容相同
a.append(3) //原地修改,在a列表的末尾添加3
//注意,单纯的append()函数不产生返回值,不会生成副本,因此对c
//不产生影响
a[2].append(3) //虽然也是append()函数,但并不"单纯" ,则会产生返回值
输出结果:
a = [1,2,[1,2,3],3]
b = [1,2,[1,2,3],3]
c = [1,2,[1,2,3]]
d = [1,2,[1,2,3]]
e = [1,2,[1,2]]