浅析copy和deepcopy

浅拷贝:(copy.copy()),是对象数据中顶层结构的拷贝,如果是引用,则直接拷贝引用,不是引用的直接拷贝;

      例如:import copy

                  a = [1, 2, 3]

                  b = copy.copy(a)

                  c = [a, 123]

                  d = copy.copy(c)

                 此时由于b的是copy a中的数据,新开辟了一块内存区域,所以b跟a是相互独立的,互不影响,修改a中的数据, 

                b不会受影响.而又因为是浅拷贝,对于引用,则直接拷贝引用,所以d内存区域中也保存a的引用和数据123,修                          改a中的数据,d中a的数据应用也会受影响.

深拷贝:(copy.deepcopy()),是对对象所有层次的数据的完全拷贝,      如果是引用,直接拷贝引用对应的所有的数据。

      例如:import copy

                  a = [1, 2, 3]

                  b = copy.deepcopy(a)

                  c = [a, 123]

                  d = copy.deepcopy(c)

                  此处是深拷贝,拷贝引用对应的所有的数据,所以,d和c 中的数据时相互独立的,通过c修改a中的数据,d不会                      受影响。


猜你喜欢

转载自blog.csdn.net/xiamoyanyulrq/article/details/79957148