python——深浅拷贝
一、字符串和数字
1、存储方式:
str:一次性创建,不能被修改,只要修改,就是再创建一个字符串
list:是链表的形式,它存储了上一个元素和下一个元素的位置
2、深浅拷贝和赋值
对于数字和字符串,赋值、浅拷贝和深拷贝无意义,因为它们都指向同一个地址
>>> n1 = 55555 >>> n2 = n1 >>> id(n1),id(n2) #id(对象) 输出对象值存储的地址 (2301027787888, 2301027787888) >>> import copy #导入copy模块 >>> n3 = copy.copy(n1) #浅拷贝 >>> id(n3) 2301027787888 >>> n4 = copy.deepcopy(n1) #深拷贝 >>> id(n4) 2301027787888
结论:拷贝和赋值都指向同一个位置
二、列表、字典和元组
对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。
1、赋值
赋值只是创建了一个变量,新的变量还是指向原来的内存地址
n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]} n2 = n1
2、浅拷贝
浅拷贝:在内存中只额外创建第一层数据
3、深拷贝
深拷贝:在内存中将所有数据再创建一遍(除了最底层的数字和字符串)