\section{Standard Module \sectcode{copy}}
\label{module-copy}
\stmodindex{copy}
\renewcommand{\indexsubitem}{(copy function)}
\ttindex{copy}
\ttindex{deepcopy}

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

Interface summary:

\bcode\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}\ecode
%
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 \emph{shallow copy} constructs a new compound object and then (to the
extent possible) inserts \emph{references} into it to the objects found
in the original.

\item
A \emph{deep copy} constructs a new compound object and then,
recursively, inserts \emph{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 \emph{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.
\refstmodindex{pickle}
\renewcommand{\indexsubitem}{(copy protocol)}
\ttindex{__getinitargs__}
\ttindex{__getstate__}
\ttindex{__setstate__}
