본문 바로가기

Programming/Python

[파이썬 프로그래밍] 14화 복사

[파이썬 프로그래밍] 14화 복사    




 제나 그렇듯이 뭔가 꾸준히 하려면, 방해요소를 제거하는데 초점을 맞춰야 합니다

그런데 사람일이라는게 불현듯이 닥쳐오기 때문에 그것을 최소화 하기 위해서는 미리미리 끝내놓고

계획을 세워서 움직여야 겠지요. 지금 제 상황이 그렇습니다 ㅜㅜ


아무튼 이번 시간에는 가장 간단하지만 꼭 알고 있어야 할 기법중 하나인 '복사'에 대해서

알아보도록 하겠습니다.


복사같은 경우는 저는 파일입출력 할떄 연동해서 유용하게 사용했는데요.

한번 공부해 보죠~




복사 - deep copy



복사에는 2가지 종류가 있습니다.
1. deep copy 
2. shallow copy

먼저 딥카피 부터 알아보죠.  위의 화면을 보시면 
Bank 라는 은행이라는 변수를 만들고 100,200,300 이라는 값을 넣어 줬습니다.

그리고 Hacker 라는 해커라는 변수에 copy.deepcopy(Bank) 라고 입력하여
은행에 있는 계좌의 돈을 해커에게 이체(?) 시키는 코드가 되었습니다. 즉, 복사가 되었습니다.

Bank 와 Hacker 라는 변수를 각각 호출하면 정확히 똑같은 값이 출력되어서
복사가 성공적으로 완료 된것을 확인 할 수 있습니다.
copy() 함수는 shallow copy 를 하는 함수 이며, deepcopy()함수는 객체 공유를 하지않는 함수 이죠.



복사 - shallow copy


user1 에 사과,포도,바나나 라는 값을 넣고

user2 에는 user1 을 넣어줍니다.


그리고 user1[0] = 100 이라고 값을 집어넣고

user1 과 user2의 변수를 각각호출하면 똑같이 처음 값이 100으로 나오는 것을 확인 할 수 있습니다.


여기서 주의하실점은 저 값이 복사되기 보다는, 주소가 저장된것이 복사 된것입니다.

그러므로 객체인 '사과,포도,바나나'를 동시에 공유하고 있게 됩니다.