\section{Built-in module \sectcode{copy}}
\stmodindex{copy}
\ttindex{copy}
\ttindex{deepcopy}

This module provides generic (shallow and deep) copying operations.

Interface summary:

\begin{verbatim}
import copy

x = copy.copy(y)	# make a shallow copy of y
x = copy.deepcopy(y)	# make a deep copy of y
\end{verbatim}

For module specific errors, \code{copy.Error} is raised.

The difference between shallow and deep copying is only relevant for
compound objects (objects that contain other objects, like lists or
class instances):

\begin{itemize}

\item
A {\em shallow copy} constructs a new compound object and then (to the
extent possible) inserts {\em references} into it to the objects found
in the original.

\item
A {\em deep copy} constructs a new compound object and then,
recursively, inserts {\em copies} into it of the objects found in the
original.

\end{itemize}

Two problems often exist with deep copy operations that don't exist
with shallow copy operations:

\begin{itemize}

\item
Recursive objects (compound objects that, directly or indirectly,
contain a reference to themselves) may cause a recursive loop.

\item
Because deep copy copies {\em everything} it may copy too much, e.g.
administrative data structures that should be shared even between
copies.

\end{itemize}

Python's \code{deepcopy()} operation avoids these problems by:

\begin{itemize}

\item
keeping a table of objects already copied during the current
copying pass; and

\item
letting user-defined classes override the copying operation or the
set of components copied.

\end{itemize}

This version does not copy types like module, class, function, method,
nor stack trace, stack frame, nor file, socket, window, nor array, nor
any similar types.

Classes can use the same interfaces to control copying that they use
to control pickling: they can define methods called
\code{__getinitargs__()}, \code{__getstate__()} and
\code{__setstate__()}.  See the description of module \code{pickle}
for information on these methods.
\stmodindex{pickle}
\ttindex{__getinitargs__}
\ttindex{__getstate__}
\ttindex{__setstate__}
