코딩에서 함수란? 매개변수와 인자의 차이 알아보기

함수는 프로그래밍의 기본 단위다. 어떤 입력값을 받아 일정한 로직을 수행하고 결과를 반환한다. 복잡한 프로그램도 결국 여러 함수의 조합으로 이루어진다. 함수를 사용하면 중복을 줄이고, 코드를 구조화해 유지보수를 쉽게 만들 수 있다. 그런데 코드를 작성하다 보면 매개변수(parameter)와 인자(argument)라는 단어가 자주 등장한다. 둘 다 함수의 입력과 관련 있지만, 역할이 다르다. 많은 개발자가 헷갈려 하는 부분이라 이번 글에서 명확히 구분해보자.

1. 함수의 기본 형태 살펴보기

기본적인 파이썬 함수 예시를 먼저 보자.
def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 8

이 코드에서 ab매개변수(parameter)다. 함수를 정의할 때 괄호 안에 적는 이름으로, 함수가 외부로부터 어떤 값을 받을지 지정한다. 반면 35인자(argument)다. 함수를 호출할 때 실제로 전달되는 값이다. 즉, 매개변수는 함수 정의의 일부이고, 인자는 함수 실행의 일부다.

2. 매개변수(parameter)는 함수의 설계도


매개변수는 함수가 어떤 형태의 입력을 받을지를 정의하는 설계도다. 이름만 있고 값은 없다. 함수가 호출될 때 인자값이 들어오면, 그 값이 매개변수에 “대입”된다. 그 순간부터 매개변수는 함수 내부에서 변수처럼 사용된다.


def greet(name, time):
    print(f"{time}에 인사합니다, {name}님!")

greet("민수", "오전")

위 예시에서 nametime은 매개변수, 호출 시 전달된 "민수"와 "오전"은 인자다. 호출 순간, 인자가 매개변수로 복사되어 함수 내부에서 사용된다. 이 구조를 이해하면 디버깅이 훨씬 쉬워진다.

3. 인자(argument)는 실행 시 전달되는 실제 값

인자는 함수가 실제로 호출될 때 넘겨주는 데이터다. 이 값은 고정일 수도 있고, 계산 결과나 다른 함수의 반환값일 수도 있다.


def multiply(x, y):
    return x * y

result = multiply(2, 4)
print(result)  # 8

여기서 xy는 매개변수, 24는 인자다. 함수가 호출될 때 인자가 매개변수에 대입되어 함수 본문이 실행된다. 이 흐름을 이해하면, “값이 왜 다르게 들어오지?” 같은 버그를 찾을 때 빠르게 원인을 파악할 수 있다.

4. 혼용해도 될까?

개인적인 생각이지만 실무에서나 인강을 보면 사람마다 두 용어를 구분하지 않고 섞어서 쓰는 경우가 은근 많다. “파라미터 넣어줘”라고 하더라도 인자를 뜻하는 경우가 많고, 코드 실행에는 전혀 문제가 없다. 하지만 문서화나 협업에서는 의미를 구분하는 편이 낫다. 예를 들어 API 명세서나 함수 시그니처를 설명할 때 ‘매개변수(parameter)’는 함수 정의 쪽, ‘인자(argument)’는 호출 쪽을 가리킨다는 걸 알아두면 혼동이 줄어든다.

5. 마무리

  • 매개변수(Parameter): 함수 정의 시점의 변수 이름
  • 인자(Argument): 함수 호출 시점의 실제 값

사실 코드를 잘 작성하는게 중요한거고 이런 개념은 어려운것도 아니니 가끔 헷갈릴때 볼려고 작성하게 되었다

댓글 쓰기