14.python当中深浅拷贝

    https://www.cnblogs.com/doublexi/p/8745792.html
    =赋值:数据完全共享(=赋值是在内存中指向同一个对象,如果是可变(mutable)类型,比如列表,修改其中一个,另一个必定改变
    浅拷贝:数据半共享(复制其数据独立内存存放,但是只拷贝成功第一层)  意思是说最外层大家的地址是一样的,你去改变最外层的其中一个变量,另一个不会改变,但是最里面的元素还是共享内存的,你去改变其中一个,另一个也会跟着改变
    浅拷贝的原理,l2拷贝l1的时候只拷贝了他的第一层,也就是在其他内存中重新创建了l1的第一层数据,但是l2无法拷贝l1的第二层数据,也就是列表中的列表,所以他就只能指向l1中的第二层数据
    由此,当修改l1中第二层数据的时候,浅拷贝l1的l2中的第二层数据也随之发生改变
    对于数字和字符串的赋值、浅拷贝、深拷贝在内存当中用的都是同一块地址
    对于赋值,字典、列表、元组等其他类型用的内存地址不会变化。
    所以对于浅拷贝,字典、列表、元组等类型,它们只拷贝第一层地址。
    对于深拷贝,字典、列表、元组等类型,它里面嵌套多少层,就会拷贝多少层出来,但是最底层的数字和字符串地址不变。

猜你喜欢

转载自blog.csdn.net/Wgb_0206/article/details/88793773