소스 코드:Lib/copy.py

할당 문서 Python 하지 않는 객체를 복사,그들이 만드는 bindingsbetween 대상과 개체입니다. 컬렉션에는 변경하거나 containmutable 항목을 복사본은 가끔은요 그래서 하나 하나를 변경할 수 있 복사 withoutchanging 니다. 이 모듈은 일반적인 얕고 깊은 복사 작업을 제공합니다(아래에 설명).

인터페이스 요약:

copy.copy(x)¶

Return 얕은 복사합니다.x.,

copy.deepcopy(x)¶

Return 깊은 복사합니다.x.

제외copy.error

제기를 위한 모듈은 특정 오류가 있습니다.

사이의 차이는 얕고 깊은 복사만 관련 compoundobjects(객체를 포함하는 다른 물체처럼,목록 또는 클래스의 인스턴스):

  • 얕은 복사본을 생성하는 새로운 화합물 개체고 다음(을 extentpossible)삽입한 참조로 그것을 개체를 발견했습니다.,

  • 딥 카피는 새로운 복합 객체를 생성 한 다음 재귀 적으로 원본에있는 객체를 삽입합니다.

두 가지 문제가 종종 존재하는 깊은 사본 작업을 하는 존재하지 않으로 shallowcopy 운영:

  • 재귀체(복합체를 직접적으로 또는 간접적으로 포함하에 대한 참조 자신)일으킬 수 있는 재귀적 루프입니다.

  • 딥 카피는 모든 것을 복사하기 때문에 복사본간에 공유 할 데이터와 같이 너무 많이 복사 할 수 있습니다.,

deepcopy()기능을 방지함으로써 이러한 문제:

  • memo의 사전 개체에 이미 복사하는 동안 currentcopying 전달;

  • 시키는 사용자 정의 클래스를 재정의 복사 동작이나 설정 ofcomponents 복사됩니다.

이 모듈을 복사하지 않음 유형과 같은 모듈,방법,스택 추적이,스택 구조,file,socket,창,배열,또는 이와 유사한 형식입니다., 그것은 복사 기능 andclasses(얕고 깊이)반환하여 원래의 객체를 변경되지 않은;이 호환으로 이 방법이 이들에 의해 처리된pickle모듈이 있습니다.

클래스는 controlpickling 에 사용하는 복사를 제어하기 위해 동일한 인터페이스를 사용할 수 있습니다. Thesemethods 에 대한 자세한 내용은 modulepickle의 설명을 참조하십시오. 실제로copy모듈은copyreg모듈의 registeredpickle 함수를 사용합니다.,

하기 위해서 클래스를 정의하는 그것의 자신의 복사본을 구현할 수 있습 definespecial 방법을__copy__()__deepcopy__(). 전자는 얕은 복사 작업을 구현하기 위해 호출되며 추가 인수는 전달되지 않습니다.후자는 딥 복사 작업을 구현하기 위해 호출됩니다.이 작업은memo사전으로 전달됩니다., 는 경우에는__deepcopy__()구현 needsto 들에게 깊은 복의 구성 요소,그것은 전화deepcopy()functionwith 구성 요소로 첫 번째 인수와 메모전으로 두 번째 인수로 합니다.

see

모듈pickle

토론의 특별한 방법을 지원하는 데 사용되는 개체 상태 검색 andrestoration.