더북(TheBook)


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]

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.