Der folgende Code zeigt, dass, wenn Sie zwei Objekte pickle, wenn man eine Referenz der anderen ist (ist das das richtige Wort?), Nach dem Gurken und Laden dieser Beziehung verloren geht. Unten können Sie sehen, dass Änderungen in aa
auch in bb
auftreten. Aber nach dem Beizen und dem Testen für dasselbe Verhalten würde ich erwarten, dass Änderungen in dd
auch in ee
auftreten. Aber das ist nicht der Fall. Kannst du mir bitte erklären, was passiert?Wy ist Gurke, die veränderbare/referenzierte Objekte nicht berücksichtigt?
import numpy as np
aa=np.ones((5,3))
print 'aa',aa
bb=aa.T
aa[2,2]=3
print 'aa',aa, aa.nbytes
print 'bb', bb, bb.nbytes #bb also prints out hte affect of the change from aa. OK
import pickle
pickle.dump([aa,bb], open("save.p", "wb"))
with open("save.p", "rb") as f:
dd,ee=pickle.load(f)
print 'dd',dd
print 'ee',ee
dd[1,0]=5 #shouldn't this affect ee also?
print 'dd',dd
print 'ee',ee # is different than dd. I would have expected that they should be the same (except for the transpose).