[python] 함수의 인자 전달 방식 - 값에 의한 전달, 참조에 의한 전달

파이썬은 함수를 호출할 때 인자를 전달할 때 값에 의한 전달참조에 의한 전달 두 가지 방식을 지원합니다. 이러한 방식을 이해하면 함수가 데이터를 처리하는 방식을 더욱 잘 이해할 수 있습니다.

값에 의한 전달 (Call by Value)

값에 의한 전달은 함수를 호출할 때 인자의 값을 복사하여 전달하는 방식입니다. 이 방식을 이용하면 함수 내에서 매개변수의 값을 변경해도 함수 외부에서는 영향을 받지 않습니다. 다음은 값을 전달하는 예시입니다:

def modify_value(x):
    x = x * 2
    print("Inside the function:", x)

value = 10
modify_value(value)
print("Outside the function:", value)

위의 예제에서 modify_value 함수 내에서 x 값을 변경했지만, 함수 외부에서 value는 변경되지 않았습니다.

참조에 의한 전달 (Call by Reference)

참조에 의한 전달은 함수를 호출할 때 인자의 주소를 전달하여 해당 주소를 통해 직접 접근하는 방식입니다. 이 방식을 이용하면 함수 내에서 매개변수의 값을 변경하면 함수 외부에서도 영향을 받게 됩니다. 다음은 참조를 전달하는 예시입니다:

def modify_list(lst):
    lst.append(4)
    print("Inside the function:", lst)

my_list = [1, 2, 3]
modify_list(my_list)
print("Outside the function:", my_list)

위의 예제에서 modify_list 함수 내에서 lst에 요소를 추가했고, 이 변경이 함수 외부의 my_list에도 영향을 미쳤습니다.

결론

파이썬에서는 기본적으로 참조에 의한 전달 방식을 지원합니다. 그러나 불변 객체(예: 숫자, 문자열, 튜플)의 경우에는 사용하는 함수 내에서 값을 변경해도 함수 외부에서는 영향을 받지 않는다는 것을 명심해야 합니다.
값에 의한 전달 방식은 불변 객체의 값을 변경할 때 사용됩니다.

함수의 인자 전달 방식을 이해하는 것은 파이썬을 사용하여 프로그램을 작성할 때 매우 중요합니다.

참조: