얕은 복사 2

얕은 복사, 깊은 복사란?

복사는 복사인데 얕은 것과 깊은 것의 차이는 무엇일까? 핵심은 값의 복사이냐 주소값의 복사이냐의 차이이다. C에서는 포인터 개념이 존재하므로 언어 학습 시 꼭 배우게 되는 개념이다. Call by Reference냐 Call by Value이냐를 갖고 고민했던 기억이 난다. 파이썬에서는 얕은 복사가 Call by Reference, 깊은 복사가 Call by Value이다. 📌얕은 복사 = 주소값 복사 # Python list_1= [1,2,3] list_2 = list_1 # list_1과 list_2가 참조하는 대상(객체)이 같습니까? if list_1 is list_2: print('list_1과 list_2는 같은 객체를 참조합니다.') # list_1과 list_2가 참조하는 대상에 담긴 값이 ..

변경 불가능한 자료형 주의하기

변경 가능한 객체와 불가능한 객체 📌Immutable 변경 불가능한 객체는 무엇이 있을까? 파이썬에서는 대표적으로 문자열, 튜플이 있다. str1 = 'Rainy day' str1 = 'Sunny day' str1에 저장한 문자열을 바꾸었다. 하지만 여기서 문자열을 수정한 것은 아니다. 서로 다른 객체로 바꿔치기 한 것이다. 문자열 객체는 총 두 번 생성되었기 때문이다. 'Rainy day'와 'Sunny day' 즉, immutable한 객체는 문자열이 변경되지 않고 새롭게 생성된다. 튜플도 마찬가지이다. 튜플은 값을 변경하려고 시도하면 에러가 발생한다. 📌Mutable Mutable 객체는 변경 가능한 객체이다. 대표적으로 리스트, 딕셔너리가 있다. list1 = [1,2,3,4,5] list1[-1..