深拷贝浅拷贝

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深拷贝浅拷贝相关的知识,希望对你有一定的参考价值。

一、关于str、list在内存中如何存储的。

1、str 一次性创建只要修改其内存位置就会改变,且要给新的值一个新的变量。(字符串的内容都储存在同一个内存的位置,如果索引两个不同的字符串,其id地址一样)

2、list 因其内部关系是链表式 所以可以增删改 其变量的内存位置仍然不会改变,且其内部相同的值也指向同一处内存。

 

二、拷贝copy

1、特性:拷贝过来的值,其id和老的id同指一处内存地址。

2、数字及字符串的copy(深浅copy 对于int、str 效果是一样的):

  数字及字符串的copy,它们新老变量的id地址永远一致。

  老师讲解时提到,数字、字符串赋值,它们的id地址也不变, 我认为他们变或者不变是根据他们的值所决定的,在电脑内存中python有一个规定的范围,只要你的值是在这个规定的范围内,那么只要你们的值相同,变量不同,你们的id地址也是指向同一处的,相反超出这个范围,id地址是不同的。

3、深浅拷贝copy:

     特性:适用于 在拥有多层关系的tuple、list、dict中。

  浅拷贝:例如、b是a的浅拷贝,那么b和a的变量内存地址是不相同的,但是b和a的变量内部值的内存地址是相同的。

  深拷贝:变量和其内部值内存地址都是相同的。

浅拷贝                                                           

  技术分享 

深拷贝

 

     技术分享

  

 

以上是关于深拷贝浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

IOS 深拷贝和浅拷贝

VUE开发 - 深拷贝与浅拷贝探讨

什么是深拷贝和浅拷贝以及如何实现深拷贝

深拷贝和浅拷贝的区别?

Python3 & 浅拷贝与深拷贝

C#的浅拷贝和深拷贝