个人认为这个知识点比较重要,所以单独做了一个文章
Python中的浅拷贝就是对引用的拷贝,深拷贝就是对引用的拷贝,深拷贝就是对对象资源的拷贝
对赋值的认识
1.赋值是将一个对象的地址赋值给一个变量,让变量指向该地址
2.修改不可变对象(str,tupel)需要开辟新的空间
3.修改可变对象(list)不需要开辟新的空间
例如 a=3
对于数字和字符串
深浅拷贝都一样,数字和字符串在内存中使用的都是同一个内存地址
image
对于字典、列表、元组等其他类型的拷贝
赋值

结论:对于赋值,字典、列表、元组等其他类型用的内存地址不会变化。
浅拷贝
image
结论:所以对于浅拷贝,字典、列表、元组等类型,它们只拷贝第一层地址。
深拷贝
进行深拷贝时,字典里面的第一层和里面嵌套的地址都已经变了。对于深拷贝,它会拷贝多层,将第二层的列表也拷贝一份,如果还有第三层嵌套,那么第三层的也会拷贝,
但是对于里面的最小元素,比如数字和字符串,这里就是“wu”,123,“alex”,678之类的,按照python的机制,它们会共同指向同一个位置,它的内存地址是不会变的
image
结论:对于深拷贝,字典、列表、元组等类型,它里面嵌套多少层,就会拷贝多少层出来,但是最底层的数字和字符串地址不变
。
网友评论