1
我掙扎deepcopy的()含有十進制值的一類。所以我嘗試了深度複製一個Decimal對象,並且失敗了。我在這裏誤解了什麼?的Python deepcopy的()一十進制()對象
from copy import deepcopy
from decimal import Decimal
## Deepcopy an array ##
a = [1,2,3,4]
b = deepcopy(a)
a is b
# False
## Deep copy a Decimal ##
a = Decimal('0.123')
b = deepcopy(a)
a is b
# True
## Deepcopy a class containing a Decimal ##
class A(object):
def __init__(self, dec):
self.myDecimal = Decimal(dec)
a = A('0.123')
b = deepcopy(a)
a is b
# False
a.myDecimal is b.myDecimal
# True
該類複製但小數引用保持不變。
啊,謝謝!因此,對任一副本的新賦值都會創建一個新對象,而另一個引用仍將指向舊對象。 –
@switch_on:包含不可變對象的可變結構仍將被複制,但只是共享對這些不可變對象的引用。您的第一個示例,即深度複製列表,會生成第二個列表對象,其值都是對另一個列表包含的完全相同整數對象的引用。 –