Python 복사 객체
Python에서 할당 문은 객체를 복사 할 수있는 권한이 없지만 원래 객체의 참조를 공유하는 새 변수 만 생성합니다.
복사는 프로그래밍에서 매우 유용하며 주로 다른 사본을 손상시키지 않고 한 사본의 코드를 편집하는 데 필요합니다.
이 튜토리얼에서는 Python에서 객체를 복사하는 다양한 방법에 대해 설명합니다.
얕은 복사를 사용하여 Python에서 객체 복사
단순 복사 작업을 사용하려면copy
모듈을 가져와야합니다. copy
모듈은 프로그래머에게 일반적인 딥 및 얕은 복사 작업을 사용할 수있는 기능을 제공합니다.
단순 복사는 기본적으로 원본 요소에서 발견 된 자식 개체의 참조를 저장하는 새로운 수집 개체를 만듭니다. 이 프로세스는 재귀 적이 지 않으므로 자식 개체의 복사본을 만들지 않습니다.
단순 복사 작업이 발생하면 참조가 새 개체에 복사됩니다. 즉, 개체의 복사본이 변경되면 이러한 변경 사항이 원본 개체에도 반영됩니다.
다음 코드는Shallow copy
작업을 사용하여 Python에서 객체를 복사합니다.
import copy
# the original list
ol = [2, 4, [1, 8], 6, 8]
# using copy to shallow copy
nl = copy.copy(ol)
print("Original list before shallow copy")
for x in range(0, len(ol)):
print(ol[x], end=" ")
print("\r")
# modfying the new list
nl[2][0] = 9
print("Original list after shallow copy")
for x in range(0, len(ol)):
print(ol[x], end=" ")
출력:
Original list before shallow copy
2 4 [1, 8] 6 8
Original list after shallow copy
2 4 [9, 8] 6 8
앞서 언급했듯이이 작업에서는 자식 프로세스의 복사본이 생성되지 않습니다. 따라서 얕은 복사는 완전히 자립적이지 않고 원본 객체에 의존한다고 말할 수 있습니다.
전체 복사를 사용하여 Python에서 객체 복사
딥 및 얕은 복사 작업을 모두 사용하려면copy
모듈을 Python 코드로 가져와야합니다.
전체 복사 작업에서 복사 프로세스는 항상 반복적으로 발생합니다. 전체 복사 작업은 먼저 새 수집 개체를 만든 다음 원본 요소에서 찾은 자식 개체의 복사본을 추가합니다.
기본적으로전체 복사
프로세스에서 원본 객체의 사본이 새 수집 객체로 전달됩니다. 따라서 개체의 복사본이 변경된 경우 이러한 변경 사항은 원래 개체에 반영되지 않습니다. 이 전체 복사 작업을 구현하기 위해deepcopy()
함수를 사용합니다.
다음 코드는deepcopy()
함수를 사용하여 Python에서 전체 복사 작업을 구현합니다.
import copy
# original list
ol = [2, 4, [1, 8], 6, 8]
# use deepcopy() to deep copy
nl = copy.deepcopy(ol)
# original elements of list
print("Original list before deep copying")
for x in range(0, len(ol)):
print(ol[x], end=" ")
print("\r")
# adding and element to new list
nl[2][0] = 9
# The second list after changes
print("The new list after modifications ")
for x in range(0, len(ol)):
print(nl[x], end=" ")
print("\r")
print("Original list after deep copying")
for x in range(0, len(ol)):
print(ol[x], end=" ")
출력:
Original list before deep copying
2 4 [1, 8] 6 8
The new list after modifications
2 4 [9, 8] 6 8
Original list after deep copying
2 4 [1, 8] 6 8
위의 문장에서 지시 한대로 딥 카피는 하위 객체를 재귀 적으로 복제 할 수 있습니다. 즉, 자체 의존적이며 원본 객체에 의존하지 않음을 의미합니다.
전체 복사 작업을 만드는 유일한 단점은 얕은 복사 작업보다 비교적 느리고 달성하는 데 더 많은 시간이 걸린다는 것입니다.
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
LinkedIn