\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 {\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}
\renewcommand{\indexsubitem}{(copy protocol)}
\ttindex{__getinitargs__}
\ttindex{__getstate__}
\ttindex{__setstate__}
