首页 > 代码库 > Python的赋值、深拷贝、浅拷贝

Python的赋值、深拷贝、浅拷贝

a=b

a和b两个对象地址相同

a和b两个对象的子对象地址相同

a=copy.copy(b)

a和b两个对象地址不同

a和b两个对象的子对象地址相同

a=copy.deepcopy(b)

a和b两个对象地址不同

a和b两个对象的子对象地址不同

 

可以通过id(a) 来判断a地址,通过[id(x) for x in a]来判断a的子对象地址。

 

会发现:

a=b创建的对象,a和b以及a的子对象和b的子对象都是一样的,a或b的更改会彼此影响。两者的引用地址的一样的。

a=copy.copy(b),a只是拷贝了b的引用,创建了一个新的对象,但是两者的子对象是一样的。子对象的更改会创建新的对象,不会互相影响。

a=copy.deepcopy(b),完全是两个对象,同时也创建了新的子对象,两者互不影响。

Python的赋值、深拷贝、浅拷贝