더북(TheBook)

3.17 리스트를 통한 인수 전달하기

파이썬 인수 값은 정확하게 말하자면 참조에 의해서 혹은 값에 의해서 전달되는 것이 아니다. 대신 파이썬 인수는 함수가 호출되는 순간의 인수 이름과 값이 연결된 데이터-딕셔너리 엔트리로 전달된다.

코드 동작 측면에서 말하자면 인수로 주어진 변수를 함수 안에서 수정할 수 없다는 의미다.

double_it(n)

double_it 함수가 인수 n으로 10이 전달되어 실행되었다고 가정해 보자. 함수는 키-값의 쌍으로 n:10이 전달된다. 하지만 n에 새로운 값을 대입하면 마치 지역 변수를 변경한 것과 같이 함수 밖의 n에는 영향을 미치지 않는다. 대입하는 순간 n과 데이터의 연결 고리를 끊기 때문이다.

반면 같은 방식으로 리스트를 함수의 인수로 전달하면 리스트의 일부 혹은 전부의 항목을 변경할 수 있다. (문자열이나 튜플과는 반대로) 리스트는 가변의 성질을 갖기 때문이다. 다음 예시를 살펴보자.

def set_list_vals(list_arg):
    list_arg[0] = 100
    list_arg[1] = 200
    list_arg[2] = 150

a_list = [0, 0, 0]
set_list_vals(a_list)
print(a_list)      # [100, 200, 150] 출력
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.