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」内で、辞書 A には localDict の内容が含まれます。しかし、「foo」の範囲外では、辞書 A は空です。一方、キーと値が割り当てられた後、辞書 B は関数「foo」から出た後も値を保持します。
関数「foo」の外でcopy.deepcopy()がコピーする値を維持するにはどうすればよいですか?