什么是深浅拷贝,区别

浅拷贝的区别

如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B

否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那

就是深拷贝,自食其力。

import copy
a = [1,2,3,4,5,['a','b','c']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[5].append('d')
print('b',b) # [1,2,3,4,5,['a','b','c','d'],5]
print('c',c) # [1,2,3,4,5,['a','b','c','d']]
print('d',d)# [1,2,3,4,5,['a','b','c']]

可变对象,不可变对象

可变对象:一个对象在不改变其所指向的地址前提下,可以修改其所执行的地址中的值

不可变对象:一个对象所指向的地址上的值是不能修改的,如果修改了就是它执行的地址就改变了,相当于将这个对象指向的值复制出来一份,然后做了修改后存到另一个地址上了。

区别:可变对象就不会这样会修改值后另存到一个新的地址上,而是直接再原对象的地址上把值给改变了,这个对象依然执行这个地址

本质区别:可变对象修改了值,不会新建一个内存地址的对象,不可变对象如果修改了值,及时复制了一份新的内存地址,原始地址的值不会被改变

你可能感兴趣的:(python,list)