Модул за копиране - плитко и дълбоко копиране на обекти, Python 3 за начинаещи и манекени

Присвояването не копира обекта, а само създава препратка към обекта. За променливи колекции или за колекции, съдържащи изменяеми елементи, често е необходимо копие, за да може да бъде модифицирано без промяна на оригинала. Този модул осигурява общи (плитки и дълбоки) операции за копиране.

  • Плитко копие създава нов композитен обект и след това (ако е възможно) вмъква препратки към обекти в него, които са в оригинала.
  • Дълбоко копие създава нов сложен обект и след това рекурсивно вмъква копия на оригиналните обекти в него.

Операциите за дълбоко копиране често имат два проблема, които плитките операции за копиране не:

  • Рекурсивните обекти (сложни обекти, които изрично или неявно се препращат към себе си) могат да причинят рекурсивен цикъл;
  • Тъй като дълбокото копиране копира всичко, то може да копира твърде много, например административни структури от данни, които трябва да се споделят дори между копията.

  • Съхраняване на „бележка“ речник на обекти, копирани по време на текущия пропуск за копиране;
  • Разрешаване на дефинирани от потребителя класове да заменят операцията за копиране или набор от копирани компоненти.

Този модул не копира типове като модули, класове, функции, методи, проследяване на стека, рамки на стека, файлове, сокети, прозорци и подобни типове.