[helpme][python] 함수내 pop한 후 호출시 return empty [해결완료]

Hyeseong·2020년 12월 23일
0

helpme

목록 보기
1/7

안녕하세요.

repl문제를 풀던중 pop 메소드를 사용하다가. 객체 참조에 대한 궁금증이 생겨 질문드려요.

객체 참조는 구글링하면ㅎ 그 범위와 깊이가 파이썬을 막 몇일한 개린이(개발어린이)인 저에게는 무척 깊고 심오하게 다가와서요.

본론

메서드 직접 호출시

  • 하나. (저의 뇌직컬로 guess) 함수 내부에 my_list.pop()을 작성하고 외부에서 list_pop()메소드를 3번 호출하게 되면 함수내에서 pop()이 3번 실행되게 되서 empty리스트가 된다라고 생각했는데 마지막 값[["John", 23]]을 남겨두는 모습이에요.
  • 둘, 호출 될 때 마다 my_list 변수 주소 값이 달라지는데 이는 호출 될때마다 별개의 존재(분신?)로 뿅하고 만들어지는건가요?
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메서드로 속성값을 날리고자함
직접 메서드를 호출하여 모두 날렸다고 했짐만 값 하나가 계속 남아 있음
주소 값은 호출 할때마다 달라짐.
왜? 그런가요?

해결 방안

정선교님께서 큰 은혜 배푸셔서 해결했습니다.
복 받을 실 겁니다. 선교님

profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글