안녕하세요.
repl문제를 풀던중 pop 메소드를 사용하다가. 객체 참조에 대한 궁금증이 생겨 질문드려요.
객체 참조는 구글링하면ㅎ 그 범위와 깊이가 파이썬을 막 몇일한 개린이(개발어린이)인 저에게는 무척 깊고 심오하게 다가와서요.
def list_pop():
my_list = [["John", 23], ["cat", 2]];
print('pop 메소드 사용전 함수 내부 my_list 속성 id값',id(my_list))
my_list.pop()
print('pop 사용후 함수내부 my_list 속성 id값', id(my_list))
return my_list;
print(list_pop())
print(list_pop())
print(list_pop())
출력 결과
pop 메소드 사용전 함수 내부 my_list 속성 id값 2064598623936
pop 사용후 함수내부 my_list 속성 id값 2064598623936
[['John', 23]]
pop 메소드 사용전 함수 내부 my_list 속성 id값 2064598625152
pop 사용후 함수내부 my_list 속성 id값 2064598625152
[['John', 23]]
pop 메소드 사용전 함수 내부 my_list 속성 id값 2064603337600
pop 사용후 함수내부 my_list 속성 id값 2064603337600
[['John', 23]]
결론:
메서드내에 pop메서드로 속성값을 날리고자함
직접 메서드를 호출하여 모두 날렸다고 했짐만 값 하나가 계속 남아 있음
주소 값은 호출 할때마다 달라짐.
왜? 그런가요?
해결 방안
정선교님께서 큰 은혜 배푸셔서 해결했습니다.
복 받을 실 겁니다. 선교님