[파이썬] 변수 복사 시의 깊은 복사와 얕은 복사

Python에서 변수를 복사할 때 깊은 복사와 얕은 복사가 있습니다. 깊은 복사는 복사하는 변수의 값만 복사하는 것이 아니라, 복사하는 변수의 메모리 주소까지 복사하는 것을 말합니다. 반면, 얕은 복사는 복사하는 변수의 값만 복사하는 것을 말합니다.

깊은 복사

Python에서 깊은 복사는 copy 모듈의 deepcopy() 함수를 사용하여 가능합니다. 다음은 깊은 복사를 예로 들어 설명합니다.

import copy

# 변수 a를 생성합니다.
a = [1, 2, 3]

# 변수 b를 변수 a로부터 깊은 복사합니다.
b = copy.deepcopy(a)

# 변수 a의 값을 변경합니다.
a[0] = 4

# 변수 b의 값을 출력합니다.
print(b)

위 코드를 실행하면 다음과 같이 변수 b의 값이 [1, 2, 3]로 출력됩니다. 변수 a의 값을 변경하여도 변수 b의 값은 변경되지 않습니다. 이는 변수 b를 변수 a로부터 깊은 복사하였기 때문입니다.

얕은 복사

Python에서 얕은 복사는 copy 모듈의 copy() 함수를 사용하여 가능합니다. 다음은 얕은 복사를 예로 들어 설명합니다.

import copy

# 변수 a를 생성합니다.
a = [1, 2, 3]

# 변수 b를 변수 a로부터 얕은 복사합니다.
b = copy.copy(a)

# 변수 a의 값을 변경합니다.
a[0] = 4

# 변수 b의 값을 출력합니다.
print(b)

위 코드를 실행하면 다음과 같이 변수 b의 값이 [4, 2, 3]로 출력됩니다. 변수 a의 값을 변경하면 변수 b의 값도 변경됩니다. 이는 변수 b를 변수 a로부터 얕은 복사하였기 때문입니다.

결론

Python에서 변수를 복사할 때 깊은 복사와 얕은 복사가 있습니다. 깊은 복사는 복사하는 변수의 값만 복사하는 것이 아니라, 복사하는 변수의 메모리 주소까지 복사하는 것을 말합니다. 반면, 얕은 복사는 복사하는 변수의 값만 복사하는 것을 말합니다. 따라서, 변수를 복사할 때 깊은 복사와 얕은 복사의 차이를 잘 이해하고 사용해야 합니다.