Python精品资源汇总:赋值与深浅拷贝!
2018-04-11 本文已影响72人
Python学习
Python当中对于拷贝,分为两种类型。一种是数字和字符串,另一种就是列表、元组、字典等其他类型了。
输出结果是:
2、浅拷贝
查看结果发现,对于深拷贝,数字和字符串在内存当中用的也是同一块地址。这里还是要推荐下小编的Python学习裙:【五 八 八,零 九 零,九 四 二】不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2018最新的Python资料和0基础入门教程,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑
所以综上所述,对于数字和字符串的赋值、浅拷贝、深拷贝在内存当中用的都是同一块地址。原理如下图:
二、Python字典、列表、元组等其他类型的拷贝
1、赋值
举个栗子:
结论:对于python赋值,字典、列表、元组等其他类型用的内存地址不会变化。
2、浅拷贝
举个栗子:
结果:
通过以上结果发现,python进行深拷贝时,python字典里面的第一层和里面嵌套的地址都已经变了。对于深拷贝,它会拷贝多层,将第二层的列表也拷贝一份,如果还有第三层嵌套,那么第三层的也会拷贝,但是对于里面的最小元素,比如数字和字符串,这里就是“wu”,123,“alex”,678之类的,按照python的机制,它们会共同指向同一个位置,它的内存地址是不会变的。原理如下图:
使用python深拷贝的时候,发现只有新的字典的cpu值被修改了,原来的字典里面的cpu值没有变。