books/윤성우-중급-파이썬 3

깊은 복사와 얕은 복사

두 객체의 비교와 복사v1 == v2, 변수 v1과 v2가 참조하는 객체의 내용이 같은가?v1 is v2, 변수 v1과 v2가 참조하는 객체는 동일 객체인가?객체 복사얕은 복사r1 = ['John', ('man', 'USA'), [175, 23]]r2 = list(r1)print(r1 is r2)print(r1[0] is r2[0])print(r1[1] is r2[1])print(r1[2] is r2[2])r2는 r1가 참조하고 있는 값만 복사할 뿐 실제 객체를 복사한건 아니다(얕은 복사) 깊은 복사J2021 = ['John', ('man', 'USA'), [175, 23]]J2022 = list(J2021)J2022[2][1] +=1 print(J2021)print(J2022)J2021 = ['John..

수정 가능한 객체와 수정 불가능한 객체

immutable & mutable객체가 지닌 값의 수정이 불가능한 객체를 가리켜 "immutable 객체"라고 하며 대표적예로 "튜플", "문자열"이 있다. 객체가 지닌 값의 수정이 가능한 객체를 가리켜 "mutable" 객체라 하며 대표적인 예로 "리스트"와 "딕셔너리"가 있다. 리스트 객체r [1, 2]id(r) # 리스트 주소 정보 확인r +=[3, 4] # 리스트에 값을 추가r# [1, 2, 3, 4]id(r) # 리스트 주소가 바뀌지 않았음을 확인 튜플 객체t = (1, 2)print(t)t += (3, 4)print(t)print(id(t))성격에 따라 달라지는 함수의 정의리스트def add_last(m, n): m += nr = [1, 2]add_last(r, [3, 4])print(..

레퍼런스 카운트와 가비지 컬렉션

가비지 컬렉션변수 s에 문자열이 저장되었다고 표현되었다고 표현하지만 사실은 문자열 객체에 s라는 이름이 붙은 상황이다.s = "Garbage Collection"print(s) 파이썬의 변수는 빈 상자가 아닌 떼었다 붙였다 할 수 있는 '포스트잇'의 개념이다. 변수 s가 문자열 "Garbage Collection"을 참조한다.변수 s가 문자열 "Garbage Collection"을 레퍼런스한다.참조는 '포스트잇을 가져다 붙인 것을 뜻한다. 아래 코드는 리스트 객체를 생성하고 이를 r이라는 이름으로 참조한다.r = [1, 2, 3] 이 리스트 객체는 언제 소멸되나? -> 객체를 아무도 참조하지 않는 사항r = [1, 2, 3]r = 'simple' 위 처럼 r이 리스트를 참조한 상태에서 문자열을 참조하게 ..