0%
python中的深拷贝和浅拷贝
一、浅拷贝
定义:浅拷贝只是对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值。
浅拷贝的特点:
- 公用一个值;
- 这两个变量的内存地址一样;
- 对其中一个变量的值改变,另外一个变量的值也会改变;
1 2 3 4 5 6 7 8 9 10 11 12
| >>> a=[11,22,33] >>> b=a >>> id(a) >>> id(b) >>> a is b True >>> a.append(44) >>> a [11, 22, 33, 44] >>> b [11, 22, 33, 44] >>>
|
二、深拷贝:
定义:一个变量对另外一个变量的值拷贝。
深拷贝的特点:
- 两个变量的内存地址不同;
- 两个变量各有自己的值,且互不影响;
- 对其任意一个变量的值的改变不会影响另外一个;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| >>> import copy >>> a=[11,22,33] >>> b=copy.deepcopy(a) >>> a [11, 22, 33] >>> b [11, 22, 33] >>> id(a) >>> id(b) >>> a.append(44) >>> a [11, 22, 33, 44] >>> b [11, 22, 33] >>>
|