当前位置:首页>python>python 浅拷贝

python 浅拷贝

  • 2026-10-11 06:13:33
python 浅拷贝

一. 前言

        在操作变量与数据的时候,我们会直接进行赋值a = b(把b赋值给a),但在a改变的时候,b也改变,怎么才能避免这种情况出现那,我们可以使用python自带的copy()与deepcopy()来进行处理。

二. 可变与不可变数据的认识

        mutable : 可变的,如List、Dict

        immutable : 不可变的,如Number、String、Tuple、Set

        Python赋值操作或函数参数传递,传递的永远是对象引用(即内存地址),而不是对象内容。

三. copy模块的学习

        (1)浅拷贝只拷贝最外层对象,深拷贝还会递归拷贝内层对象。

        (2)无论是浅拷贝还是深拷贝,只拷贝mutable可变对象成为一个新对象,而immutable不可变对象还是原来的那个。

        (3)当顶层对象和它的子元素对象全都是immutable不可变对象时,因为没有产生新对象,所以不存在被拷贝。

       3.1 浅拷贝

        拷贝顶层对象,但不会拷贝内部的子元素对象

                3.1.1顶层是mutable,子元素全是immutable

                (1)浅拷贝之后顶层与子元素的变化

        输出结果:

                (2)修改子元素的值之后顶层与子元素的变化

        输出结果:

                3.1.2顶层是mutable,子元素部分immutable

                (1)浅拷贝之后顶层与子元素的变化

        输出结果:

                (2)修改子元素的可变元素值之后顶层与子元素的变化

        输出结果:

                3.1.3顶层是immutable,子元素全是immutable

      输出结果:

                3.1.3顶层是immutable,子元素部分mutable

'''

浅拷贝,顶层不可变,子元素部分可变

整体id地址相同,内部子元素地址一样

a[2]与b[2]指向同一个列表,修改a[2][1]会影响b[2][1]

'''

        输出结果:

总:整体浅拷贝的学习可以结合目录三.copy模块学习下的(1)(2)(3)进行对照学习。

最新文章

随机文章