| Interface summary:: |
| |
| import copy |
| |
| x = copy.copy(y) # make a shallow copy of y |
| x = copy.deepcopy(y) # make a deep copy of y |
| |
| For module specific errors, :exc:`copy.error` is raised. |
n | |
| .. % |
| |
| The difference between shallow and deep copying is only relevant for compound |
| objects (objects that contain other objects, like lists or class instances): |
| |
| * A *shallow copy* constructs a new compound object and then (to the extent |
| possible) inserts *references* into it to the objects found in the original. |
| |
| * A *deep copy* constructs a new compound object and then, recursively, inserts |
| * letting user-defined classes override the copying operation or the set of |
| components copied. |
| |
| This module does not copy types like module, method, stack trace, stack frame, |
| file, socket, window, array, or any similar types. It does "copy" functions and |
| classes (shallow and deeply), by returning the original object unchanged; this |
| is compatible with the way these are treated by the :mod:`pickle` module. |
| |
t | Shallow copies of dictionaries can be made using :meth:`dict.copy`, and |
| of lists by assigning a slice of the entire list, for example, |
| ``copied_list = original_list[:]``. |
| |
| .. versionchanged:: 2.5 |
| Added copying functions. |
| |
| .. index:: module: pickle |
| |
| Classes can use the same interfaces to control copying that they use to control |
| pickling. See the description of module :mod:`pickle` for information on these |
| methods. The :mod:`copy` module does not use the :mod:`copy_reg` registration |