먼저 파이썬은 포인터가 없고 모든것이 객체다
자바처럼 primitive type도 없음
i = 1이렇게하면
기본이 Integer(1)이렇게되고
인터프리터가 박싱언박싱 자동으로 해줌
불린이 1비트인데 128비트로 생성된다고 함
original_list = ["s",[1]]가 있을때 세가지 복사가 있음
1.alias
new_list = original_list 이렇게하면
둘의 참조와 값의 주소 모두 같음
사실 이건 복사가 아니라
new_list는 따로 존재하지 않고 그냥 별칭이됨
2. shallow copy
new_list = original_list[:] 이렇게 하면 얕은복사임
copy의 기본 copy함수도 얕은복사임
두 객체의 참조는 다르지만
객체 내의 이뮤터블 한 값은 참조가 공유됨
이 값을 변경하려고하면 문제 생길 수 있음
3.deep copy
import copy
new_list = copy.deepcopy(original_list)
이렇게하면 두 객체의 참조와
안에 들어있는 모든 값의 참조도 새로 assign됨
하지만 immutable 한 값은 변경불가능이라서 얘는
새로값을주면 알아서 재할당됨
열정이 대단하시네용... 난 파이썬 대충 돌아가는 코드 배껴서 쓰고 있는데... 나중에 제대로 깊게 공부해야할듯... ㅋㅋㅋ
이 댓글은 게시물 작성자가 삭제하였습니다.
이거 초보때 개좆같았는데.. 근데 계속 하다보니까 리스트 복사를 쓸일이 별로 없더라