[파이썬] 변수의 참조와 복사

Python에서 변수는 다른 변수로 복사하거나 참조할 수 있습니다. 이는 다른 언어들과 다르게 동작하기 때문에 이해하기 쉽지 않습니다. 이 블로그 글에서는 Python에서 변수간의 참조와 복사를 이해하는 방법을 소개합니다.

변수의 참조

Python에서 변수는 다른 변수로 참조할 수 있습니다. 이는 변수가 메모리 상의 객체를 가리키고 있기 때문입니다. 다음 예제는 변수간의 참조를 보여줍니다.

a = [1, 2, 3]
b = a

print(a)  # [1, 2, 3]
print(b)  # [1, 2, 3]

위 예제에서 ab는 동일한 리스트를 가리키고 있습니다. 따라서 ab는 같은 값을 출력합니다. 하지만 참조는 단방향이므로 b가 변경되면 a도 변경됩니다.

a = [1, 2, 3]
b = a

b[1] = 4

print(a)  # [1, 4, 3]
print(b)  # [1, 4, 3]

위 예제에서 b의 두 번째 요소를 4로 변경하면 a도 변경됩니다.

변수의 복사

Python에서 변수는 다른 변수로 복사할 수 있습니다. 이는 변수가 메모리 상의 객체를 가리키고 있기 때문입니다. 다음 예제는 변수간의 복사를 보여줍니다.

a = [1, 2, 3]
b = a.copy()

print(a)  # [1, 2, 3]
print(b)  # [1, 2, 3]

위 예제에서 ab는 동일한 리스트를 가리키고 있지만 다른 메모리 주소를 가리키고 있습니다. 따라서 ab는 같은 값을 출력합니다. 하지만 복사는 양방향이므로 b가 변경되면 a는 변경되지 않습니다.

a = [1, 2, 3]
b = a.copy()

b[1] = 4

print(a)  # [1, 2, 3]
print(b)  # [1, 4, 3]

위 예제에서 b의 두 번째 요소를 4로 변경하면 a는 변경되지 않습니다.

결론

Python에서 변수는 다른 변수로 복사하거나 참조할 수 있습니다. 변수간의 참조는 단방향이며 변경되면 다른 변수도 변경됩니다. 반면 변수간의 복사는 양방향이며 변경되면 다른 변수는 변경되지 않습니다. 이를 이해하는 것은 Python 프로그래밍을 하는 데 도움이 됩니다.