Python
Shallow copy / Deep copy / Copy
#Ubuntu 16.04 LTS
#Python 3.5.2
#>> 상세 설명, 실행화면
코드 동작을 시켜보고 싶으신 분은 아래 참조내용에 1. GitHub에 가셔서 코드를 다운 받아서 "main.py"를 실행 시키세요 :)
1. Copy 단순 복사
단순 객체의 복사는 그냥 같은 객체 주소를 가르킨다고 생각하시면 됩니다.
둘 중에 하나를 수정하면 원래의 내용도 수정된다고 생각하면 되요.
= 그냥 객체 자체를 복사했다고 생각하시면 됩니다.
2. Shallow copy
copy.copy(value_name)
얕은 복사 같은 경우에는 굳이 copy module 을 쓰지 않더라도 자체에 키워드가 있기도 합니다.
즉, dict.copy() = copy.copy(dict) 은 같은 동작을 합니다.
단순 복사와의 차이는 틀(껍데기)만 복사하기 때문에 객체의 주소값이 바뀐다는 것 입니다.
따라서 copy 후에 제가 값을 변경하면 주소가 참조 되는 변경이 가능한 변수들은 여전히 값의 변경이 공유됩니다.
= 내부에 생성된 리스트, 딕셔너리와 같은 변경 가능한 객체는 수정을 해도 주소 값이 변경 되는 것이 아니기 때문에 바뀐 값이 공유됩니다.
3. Deep copy
copy.deepcopy(value_name)
단순 복사, 얕은 복사와의 차이는 내부에 생성된 변수, 객체들 까지도 다른 주소값을 가진다는 것입니다.
틀 뿐만 아니라 데이터 자체를 복사해서 새로 만든다고 생각하시면 됩니다.
= 내부에 생성된 리스트, 딕셔너리 마저도 새로 주소를 생성해서 복사하기 때문에 바뀐 값이 공유되지 않습니다.
#2018년07월13일
'개발자 레니는 지금 - > 소프트웨어와 함께' 카테고리의 다른 글
[ DO ] 파이썬 마이크 입력 코드 (0) | 2018.07.16 |
---|---|
[ BASIC ] PEP8 - Style Guide for Python Code (0) | 2018.07.16 |
[ C/C++ ] 참조자와 포인터, 첨보면 무지무지 헷갈린다 (0) | 2018.07.10 |
[ Python ] Thread, 쓰레드 데이터 공유하지 않는 방법 (0) | 2018.07.09 |
[ Python ] 가상환경 만들기 (0) | 2018.06.07 |