python的深拷貝[copy.deepcopy()]與淺拷貝[copy.copy()]
阿新 • • 發佈:2018-11-26
Python中的物件之間賦值時是按引用傳遞的,如果需要拷貝物件,需要使用標準庫中的copy模組。
- copy.copy 淺拷貝 只拷貝父物件,不會拷貝物件的內部的子物件。
- copy.deepcopy 深拷貝 拷貝物件及其子物件
>>> import copy >>> a = [1,2,3,4,['a','b']] #原始物件 >>> b = a #賦值,傳物件的引用 >>> c = copy.copy(a) >>> d = copy.deepcopy(a) >>> a.append(5) >>> a[4].append('c') >>> print 'a=',a a= [1, 2, 3, 4, ['a', 'b', 'c'], 5] >>> print 'b=',b b= [1, 2, 3, 4, ['a', 'b', 'c'], 5] >>> print 'c=',c c= [1, 2, 3, 4, ['a', 'b', 'c']] >>> print 'd=',d d= [1, 2, 3, 4, ['a', 'b']]