copy 模塊

1.12. copy 模塊
copy 模塊包含兩個函數, 用來拷貝對象, 如 Example 1-64 所示.


copy(object) => object 創建給定對象的 "淺/淺層(shallow)" 拷貝(copy). 這裏 "淺/淺層(shallow)" 的意思是複製對象本身, 但當對象是一個容器 (container) 時, 它的成員仍然指向原來的成員對象.


1.12.0.1. Example 1-64. 使用 copy 模塊複製對象
File: copy-example-1.py


import copy


a = [[1],[2],[3]]
b = copy.copy(a)


print "before", "=>"
print a
print b


# modify original
a[0][0] = 0
a[1] = None


print "after", "=>"
print a
print b


before =>
[[1], [2], [3]]
[[1], [2], [3]]
after =>
[[0], None, [3]]
[[0], [2], [3]]
你也可以使用[:]語句 (完整切片) 來對列表進行淺層複製, 也可以使用 copy 方法複製字典.


相反地, deepcopy(object) => object 創建一個對象的深層拷貝(deepcopy), 如 Example 1-65 所示, 當對象爲一個容器時, 所有的成員都被遞歸地複製了。


1.12.0.2. Example 1-65. 使用 copy 模塊複製集合(Collections)
File: copy-example-2.py


import copy


a = [[1],[2],[3]]
b = copy.deepcopy(a)


print "before", "=>"
print a
print b


# modify original
a[0][0] = 0
a[1] = None


print "after", "=>"
print a
print b


before =>
[[1], [2], [3]]
[[1], [2], [3]]
after =>
[[0], None, [3]]
[[1], [2], [3]]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章