파이썬을 처음 배우면서 함수(def)를 만들고, 화면에 계산 결과가 잘 나와서 뿌듯했던 경험 다들 있으시죠? 그런데 막상 그 결과값을 다른 변수에 저장해서 다음 연산에 쓰려고 하면 'None'이 출력되거나 에러가 발생해서 당황한 적 없으신가요?.
"분명 콘솔 화면에는 숫자가 나왔는데, 왜 컴퓨터는 빈 값이라고 하지?"
파이썬 함수를 공부할 때 많은 초보자분들이 바로 이 지점에서 벽을 느낍니다. 매개변수와 인자라는 알쏭달쏭한 전문 용어부터, print()와 return의 차이를 헷갈리기 때문입니다. 오늘은 파이썬 함수가 외부의 값을 어떻게 받아들이고, 어떻게 결과를 돌려주는지 아주 쉽게, 하지만 실무에서도 바로 써먹을 수 있는 명확한 기준을 담아 정리해 드리겠습니다.
1. 주문서와 실제 음식 : 매개변수(Parameter)와 인자(Argument)
함수는 항상 똑같은 일만 반복하는 고정된 기계가 아니라, 어떤 값을 넣느냐에 따라 유연하게 다른 결과를 내는 장치입니다. 이때 함수가 값을 받아들이는 과정에서 두 가지 핵심 용어가 등장합니다.
- 매개변수(Parameter) : 함수를 정의할 때 괄호 안에 적는 이름입니다. 아직 실제 값이 아니라, 나중에 들어올 값을 받기 위해 비워둔 '주문서의 빈칸' 혹은 값을 받을 자리라고 생각하시면 됩니다.
- 인자(Argument) : 함수를 실제로 호출(사용)할 때 괄호 안에 넣는 실제 값입니다. 주문서 빈칸에 적어 넣는 **'실제 주문 내용'**에 해당합니다.
def add(a, b): # 여기서 a와 b는 '매개변수'입니다.
return a + b
add(3, 5) # 여기서 3과 5는 실제로 전달하는 '인자'입니다.
이 둘은 같은 흐름에서 하나로 연결되지만, 코드가 작성되는 시점과 역할이 엄연히 다릅니다. 이 차이를 명확히 구분하는 것부터가 좋은 함수 설계의 첫걸음입니다.
2. 가장 많이 헷갈리는 함정 : print() vs return의 진짜 차이
입문자가 가장 많이 하는 실수 중 하나는 print()를 함수의 최종 결과물로 오해하는 것입니다. 두 가지의 차이를 아래의 기준으로 명확히 나누어 보세요.
- print()는 '사람의 눈'을 위한 전광판입니다. 함수 안에서 연산한 값을 콘솔 화면에 보여주기만 할 뿐, 그 값을 프로그램 밖으로 내보내어 전달하지는 않습니다.
- return은 '컴퓨터'를 위한 전달자입니다. 함수 안에서 만들어진 최종 결과물을 함수를 호출한 원래 위치로 다시 전달합니다. 반환된 값은 새로운 변수에 저장하거나 다른 계산에 연결해서 재사용할 수 있습니다.
만약 return 없이 print()만 사용한 함수를 변수에 담으면 어떻게 될까요? 파이썬 함수는 기본적으로 돌려줄 값이 명시되지 않으면 자동으로 None을 반환하게 됩니다. 따라서 함수의 계산 결과를 다른 코드나 변수에서 활용하려면 반드시 return을 사용해야만 합니다.
3. 코딩 실력을 높이는 함수의 활용과 주의점
이제 핵심 개념을 알았으니, 실제 코드를 짤 때 판단 기준으로 삼을 수 있는 실무적인 주의점 세 가지를 알아보겠습니다.
- return을 만나면 함수는 즉시 종료됩니다. return 명령어가 실행되면 그 즉시 함수는 값을 밖으로 뱉어내고 종료됩니다. 따라서 return 구문 바로 아래에 작성된 코드는 절대 실행되지 않습니다. "왜 이 부분의 코드는 안 돌아가지?" 싶을 때 return의 위치를 꼭 확인해 보세요.
- 기본값(Default)을 설정할 때의 위치 주의 함수를 정의할 때 특정 매개변수에 기본값을 미리 대입해 둘 수 있습니다(예: def func(a, b=10)). 주의할 점은 기본값을 가진 매개변수는 반드시 일반 매개변수들의 뒤(마지막)에 위치해야 한다는 것입니다. 기본값을 앞에 두면 컴파일 에러가 발생하므로 위치 선정에 유의하세요.
- 반환값이 꼭 필요한가요? 모든 함수에 무조건 return이 필요한 것은 아닙니다. 예를 들어, 특정 데이터를 단순히 엑셀로 추출하여 저장하는 실행 버튼 같은 함수나, 화면에 데이터 시각화 그래프를 띄우기만 하는 함수라면 연산 결과를 변수로 받을 필요가 없으므로 return 없이 끝내도 무방합니다. 목적에 맞게 선택하세요!
[결론] 함수는 서로 연결하기 위한 조립 블록이다
좋은 함수는 단순히 내부의 동작 코드가 화려한 것을 넘어서, 무엇을 입력받고 무엇을 반환하는지가 명확한 함수입니다. 오늘 다룬 매개변수와 return의 개념을 정확히 이해하셨다면, 이제 여러분의 코드는 단순한 계산기를 넘어 여러 개의 함수가 톱니바퀴처럼 연결되는 재사용 가능한 프로그램으로 발전할 수 있을 것입니다.
함수가 값을 받고 돌려주는 흐름을 완벽히 잡으셨다면, 다음 단계로는 '함수 안에서 만든 변수가 과연 함수 밖에서도 유효할까?'에 대한 주제인 파이썬의 '변수의 범위(Scope)'를 알아보시는 것을 추천해 드립니다. 이를 통해 코드를 더욱 체계적으로 관리하는 안목을 기르실 수 있습니다!

반응형