
collections 模組
|
249
deepcopy deepcopy(x,[memo])
製作
x
的一份深層拷貝並回傳它。深層複製意味著在參考構成的一個
有向(不一定是無循環的)圖(directed graph)中遞迴遊走(https://
en.wikipedia.org/wiki/Glossary_of_graph_theory#Walks)。為了產生形狀完全
相同的圖,有一點需要特別注意:在遊走過程中,如果碰到了對相同物件
的參考超過一次,那就不能製作出各別的拷貝。取而代之,必須使用對相
同物件的那些參考。請考慮下列簡單的例子:
sublist = [1,2]
original = [sublist, sublist]
thecopy = copy.deepcopy(original)
original[0] is original[1]
是
True
(也就是說,
original
的兩個項目指
涉相同的物件)。這是
original
重要的一個特性,而任何宣稱是它的「拷
貝」的東西,都必須保留這種特性。
copy.deepcopy
的語意確保
thecopy[0]
is thecopy[1]
也是
True
:
original
和
thecopy
的參考圖(graphs of
references)因此會有相同的形狀。避免重複的拷貝有一個重要的有益的
副作用:它防止了參考圖有循環(cycles)時會發生的無限迴圈。
copy.deepcopy
接受第二個選擇性的引數
memo
,它是一個
dict
,會將已
經被複製的物件之
id ...