Python copy對象(copy與deepcopy)

Python中的對象之間賦值時是按引用傳遞的,若是須要拷貝對象,須要使用標準庫中的copy模塊。 
1. copy.copy 淺拷貝 只拷貝父對象,不會拷貝對象的內部的子對象。 
2. copy.deepcopy 深拷貝 拷貝對象及其子對象 數組

看下面的一個實例app

import copy init = [1, 2, 3, 4, ['a', 'b']] #原始對象 assign = init #賦值,傳對象的引用 
cp = copy.copy(init) #對象拷貝,淺拷貝 
dcp = copy.deepcopy(init) #對象拷貝,深拷貝 
 assign.append(5) #修改對象a 
assign[4].append('c') #修改對象a中的['a', 'b']數組對象 
  
print 'init = ', init print 'assign = ', assign print 'cp = ', cp print 'dcp = ', dcp
init =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
assign =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
cp =  [1, 2, 3, 4, ['a', 'b', 'c']]
dcp =  [1, 2, 3, 4, ['a', 'b']]

如今,讓咱們看下這些對象的內存地址:spa

print 'init id: ',id(init),'------', 'init[4] id:', id(init[4]) print 'assign id: ', id(assign),'------', 'assign[4] id: ',id(assign[4]) print 'cp id: ', id(cp),'------', 'cp[4] id: ',id(cp[4]) print 'dcp id: ', id(dcp),'------', 'dcp[4] id: ',id(dcp[4])
init id:  64393032 ------ init[4] id: 64392648
assign id:  64393032 ------ assign[4] id:  64392648
cp id:  64433544 ------ cp[4] id:  64392648
dcp id:  65395784 ------ dcp[4] id:  64392968

 

reference.net

http://www.jb51.net/article/15714.htm code

相關文章
相關標籤/搜索