2.4객체 참조에 의한 전달(파이썬) – 변경 가능 객체를 전달할 때
이번에는 변경 가능 객체인 리스트를 인자로 전달해 보겠습니다.
코드 5-10 function/call_by_obj_ref2.py
def func(li): li[0] = 'I am your father!' #1 if __name__ = = "__main__": li = [1, 2, 3, 4] func(li) print(li)
실행결과 ['I am your father!', 2, 3, 4]
코드 5-10을 보면 함수 안에서 리스트 li의 0번 인덱스의 값을 변경합니다(#1). 함수를 호출한 쪽에서 리스트를 출력하면 이번에도 상수 객체처럼 변경되지 않을까요? 실행 결과를 보면 리스트의 요소가 변경되었습니다. 조금 혼란스럽지요? 코드 5-11을 보면 더 혼란스러울 것입니다.
코드 5-11 function/call_by_obj_ref3.py
def func(li): li = ['I am your father', 2, 3, 4] #1 if _ _name__ = = "__main__": li = [1, 2, 3, 4] func(li) print(li)
실행결과 [1, 2, 3, 4]