Python--引用、copy、deepcopy

引用、copy、deepcopy

引用

      Python中的变量名与储存数据的内存的关系实际上是引用的关系,变量名本来是没有地址的,只有当赋值或者确定类型之后之后变量名才拥有地址,变量与变量之间的赋值(=)其实只是复制了其中的引用而已,也就是说其真正的内存地址是相同的,只要改变了地址中的数据,所有的引用指向的值就改变了。(可以使用id来确定是不是指向同一个内存地址)
在这里插入图片描述
      不可变的数据类型,每次进行重新赋予新值都等于其重新开辟新的空间(整型与字符串不符合以上定义不同)。
在这里插入图片描述
整形数据时在-5–256之间的数据是公用其内存空间的,也就是说两个变量都等于其之间的数,内存空间是相同的,但因为其数据是不可变的只要数据进行了改变则会重新开辟一个内存空间。
在这里插入图片描述
      对于其字符串类型的数据,对于字符串的值是相同的变量,所指向的内存空间是相同的,但因为其数据的不可变性,只要对齐进行重新赋予新值,则重新开辟内存空间。
在这里插入图片描述
      可变的数据类型,在进行变量与变量之间赋值的时候,赋值的是引用,是内存地址,而不是复制值。因为其数据元素是可变的,只要改变其里面的数据,地址空间里储存的数据就发生了改变,并没有开辟新的地址空间,此变量指向了仍指向原来开辟的空间,原来的空间里边储存的内容是改变的,所有指向此地址的变量的值,均发生了变化。
在这里插入图片描述

copy

      使用时还请先导入copy模板
      在使用copy.copy()进行复制的时候,进行的只是可变数据类型的浅复制,也就是说只是最外层的的容器的id地址遍历,容器里边的id地址并没有变化。
在这里插入图片描述
      但是进行不可变元素的浅复制的时候,则不进行复制,直接引用。
在这里插入图片描述

deepcopy

     copy.deepcopy() 进行深复制,既复制所有的值,改变所有可变数据类型的id地址,而不是只改变最外层的id
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43442071/article/details/88817665