目录
在python中赋值语句总是建立对象的引用值,而不是复制对象。因此,python变量更像是指针,而不是数据存储区域。
整片文章拿列表a = [1,2,[3,4]]举例。其实含有子对象[3,4]的。把A赋值/给B。
-
1.直接赋值B = A
直接赋值将父类元素和子类元素的索引都赋值给另外一个值,改变A和B任何一个值另外一个值都会被改变
-
2.浅拷贝 B = copy.copy(A)
浅拷贝是将父类的值赋值和子类的索引赋值给另外一个值。索引改变A和B任何一个值的父类元素另外一个值不会被改变。
但是改变任何一个值的子类元素,另外一个将会被改变。
-
3.深拷贝 B = copy.deepcopy(A)
深拷贝是将父类和子类的值都赋值给另外一个值,父类和子类的索引都没有拷贝,索引改变A和B任何一个值的父类和子类都不会影响另外一个值。
#encoding=utf8
import numpy as np
import copy
a = [1,2,[3,4]]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a[0] = 9
a[2][0] = 9
print(a,'='*5,b,'\n')
print(a,'='*5,c,'\n')
print(a,'='*5,d,'\n')
[9, 2, [9, 4]] ===== [9, 2, [9, 4]]
[9, 2, [9, 4]] ===== [1, 2, [9, 4]]
[9, 2, [9, 4]] ===== [1, 2, [3, 4]]