On 18Apr2015 23:26, boB Stepp <robertvst...@gmail.com> wrote:
On Sat, Apr 18, 2015 at 11:08 PM, Cameron Simpson <c...@zip.com.au> wrote:
Sometimes you want a "deep" copy, where "b" would have got a copy of the
iriginal x-y list. See the "copy" module's "deepcopy" function, which
supplies this for when it is needed:
https://docs.python.org/3/library/copy.html#copy.deepcopy
In this reference, part of it states:
"Two problems often exist with deep copy operations that don’t exist
with shallow copy operations:
Recursive objects (compound objects that, directly or indirectly,
contain a reference to themselves) may cause a recursive loop.
Because deep copy copies everything it may copy too much, e.g.,
administrative data structures that should be shared even between
copies."
If I am understanding things correctly, should not that last sentence
read instead:
"...structures that should *not* be shared even between copies." ???
No, the text is correct.
Suppose you have a graph of objects where some single object A is referenced in
mulitple places:
/--> O1 ----v
G < A
\--> O2 ----^
If I make a deepcopy of "G" I want this:
/--> O1copy ----v
Gcopy < Acopy
\--> O2copy ----^
i.e. a _single_ copy "Acopy" of "A", again referenced from 2 places in the
copied graph.
Without deepcopy()'s object tracking you would get something like this:
/--> O1copy ----> Acopy1
Gcopy <
\--> O2copy ----> Acopy2
i.e. two distinct copies of "A". Changes to "Acopy1" would not affect "Acopy2".
Cheers,
Cameron Simpson <c...@zip.com.au>
They said it couldn't be done/they said nobody could do it/
But he tried the thing that couldn't be done!/He tried - and he couldn't do it.
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor