我在使用 copy.copy() 和 copy.deepcopy() 以及 Python 的范围时遇到问题。我调用一个函数,一个字典作为参数传递。字典复制本地字典,但字典不保留复制的值。
def foo (A, B):
localDict = {}
localDict['name'] = "Simon"
localDict['age'] = 55
localDict['timestamp'] = "2011-05-13 15:13:22"
localDict['phone'] = {'work':'555-123-1234', 'home':'555-771-2190', 'mobile':'213-601-9100'}
A = copy.deepcopy(localDict)
B['me'] = 'John Doe'
return
def qua (A, B):
print "qua(A): ", A
print "qua(B): ", B
return
# *** MAIN ***
#
# Test
#
A = {}
B = {}
print "initial A: ", A
print "initial B: ", B
foo (A, B)
print "after foo(A): ", A
print "after foo(B): ", B
qua (A, B)
copy.deepcopy 有效,并且在函数“foo”中,dict A 具有 localDict 的内容。但是在“foo”的范围之外,dict A 是空的。同时,在分配了键和值后,dict B 保留了从函数 'foo' 出来后的值。
如何维护 copy.deepcopy() 在函数“foo”之外复制的值?