파이썬 함수 기본 정의 매개변수 반환값 실전 가이드

이 글에서는 코딩의 핵심 빌딩 블록인 파이썬 함수 기본을 다룹니다. 함수는 반복 작업을 자동화하고 복잡한 코드를 체계적으로 관리하여, 코드의 재사용성과 가독성을 높이고 유지보수를 용이하게 만드는 필수적인 도구입니다.

이 가이드를 통해 함수가 무엇인지 명확히 이해하고, def 키워드를 사용해 직접 함수를 정의하는 방법을 단계별 예제로 학습하여 프로그래밍 초보자도 자신감을 얻을 수 있도록 돕습니다.

목차

노트북 앞에서 파이썬 코드의 def 함수 정의를 보며 학습하는 초보 개발자

함수, 왜 필요할까요? 일상 속 비유로 이해하기

함수란 무엇인가에 대한 가장 간단한 정의는 “특정 작업을 수행하도록 미리 설계된, 재사용 가능한 코드 묶음”입니다. 말이 조금 어렵게 느껴지시나요? 우리 주변의 예시를 통해 아주 쉽게 이해할 수 있습니다.

  • 커피 머신: 우리는 원두와 물을 넣고 버튼만 누릅니다. 그러면 기계 내부의 복잡한 과정을 거쳐 맛있는 커피가 나옵니다. 이때 ‘커피를 내리는 복잡한 과정’이 바로 함수입니다. 우리는 내부 원리를 몰라도 버튼(함수 호출)만으로 원하는 결과(커피)를 얻을 수 있습니다.
  • 계산기: 숫자 2와 3을 입력하고 ‘+’ 버튼을 누르면 ‘5’라는 결과가 나옵니다. 여기서 ‘+’ 버튼은 ‘두 숫자를 더하는 기능’을 수행하는 함수와 같습니다.

프로그래밍에서 함수를 사용하면 다음과 같은 강력한 장점을 얻을 수 있습니다.

장점 설명
코드 재사용성 한번 잘 만들어 둔 함수는 필요할 때마다 이름만 불러 몇 번이든 다시 사용할 수 있습니다. 이는 똑같은 코드를 여러 번 작성하는 수고를 덜어줍니다.
가독성 향상 calculate_student_average()처럼 의미 있는 이름으로 함수를 만들면, 그 이름만으로도 코드의 역할을 짐작할 수 있습니다. 이는 전체 코드의 흐름을 훨씬 쉽게 파악하게 해줍니다.
유지보수 용이성 특정 기능에 문제가 생기거나 수정이 필요할 때, 전체 코드를 헤맬 필요 없이 해당 기능을 담당하는 함수 부분만 찾아 고치면 됩니다. 이를 통해 작업이 훨씬 안전하고 빨라집니다.

결론적으로 함수는 코드를 부품처럼 만들어 조립하는 것과 같습니다. 잘 만들어진 부품(함수)들을 활용하면 더 복잡하고 멋진 프로그램을 효율적으로 만들 수 있습니다. 이는 버그 발생 가능성을 줄이고, 코드의 전체적인 품질을 높이는 가장 확실한 방법입니다.

커피 머신과 계산기가 나란히 배치되어 함수의 비유를 시각적으로 보여주는 장면

def 키워드로 나만의 함수 만들기

파이썬 함수 정의def라는 키워드로 시작합니다. def는 ‘정의하다(define)’라는 단어의 줄임말로, 지금부터 새로운 함수를 만들겠다고 파이썬에게 알려주는 신호입니다.

가장 기본적인 함수 정의 문법 구조는 다음과 같습니다. 파이썬 공식 문서에서도 명시된 이 표준 문법은 함수를 만드는 모든 과정의 기초가 됩니다.

def 함수이름(매개변수1, 매개변수2, ...):
    """
    이 함수는 어떤 기능을 하는지 설명하는 공간입니다. (Docstring)
    """
    # 이 부분에 함수가 수행할 코드를 작성합니다.
    return 결과값

각 구성 요소를 자세히 살펴보겠습니다.

  • def: 함수 정의를 시작하는 키워드입니다.
  • 함수이름: 함수가 어떤 일을 하는지 쉽게 알 수 있도록, calculate_sum(합계를 계산하다)처럼 동사 형태로 짓는 것이 좋습니다.
  • 매개변수 (Parameter): 함수가 작업을 수행하는 데 필요한 값을 외부로부터 전달받는 통로입니다. 괄호 () 안에 작성하며, 만약 받을 값이 필요 없다면 비워둘 수 있습니다.
  • : (콜론): 함수를 정의하는 첫 줄(헤더)이 끝났음을 알리는 중요한 문법 기호입니다.
  • 들여쓰기 (Indentation): 콜론 다음 줄부터는 반드시 스페이스바 4칸(또는 탭 1번)을 들여써야 합니다. 이 들여쓰기 된 공간이 함수의 실제 기능이 작성되는 몸통(body) 부분입니다. 파이썬은 이 들여쓰기를 통해 코드의 소속을 구분하므로 매우 중요합니다.
  • return: 함수가 모든 임무를 마친 후, 그 결과를 함수를 호출한 곳으로 돌려주는 역할을 합니다.

이러한 구조를 통해 우리는 특정 목적을 가진 독립적인 코드 단위를 만들 수 있습니다. 파이썬 함수 기본을 익히는 것은 이 구조에 익숙해지는 것에서부터 시작됩니다.

함수 정의의 def 헤더 독스트링과 return 문이 강조된 파이썬 코드 화면 클로즈업

함수에 데이터를 주고받는 방법

함수는 외부와 데이터를 주고받으며 동작합니다. 이때 사용되는 핵심 개념이 바로 ‘매개변수‘와 ‘인수’, 그리고 ‘반환값’입니다. 이들의 차이를 명확히 이해하는 것은 함수를 제대로 활용하기 위한 필수 조건입니다.

매개변수(Parameter) vs 인수(Argument)

많은 초보자가 이 두 용어를 혼동하지만, 비유를 통해 생각하면 간단합니다. 매개변수는 함수를 정의할 때 사용하는 ‘틀’ 또는 ‘자리표시자’이고, 인수는 함수를 사용할(호출할) 때 그 틀에 채워 넣는 ‘실제 값’입니다.

구분 매개변수 (Parameter) 인수 (Argument)
정의 함수를 정의할 때, 받을 값을 대표하는 변수 이름 함수를 호출(사용)할 때, 실제로 전달하는 값
역할 함수가 어떤 종류의 값을 받을지 알려주는 ‘틀’ 매개변수라는 ‘틀’에 채워지는 ‘실제 내용물’
위치 함수 정의문의 괄호 () 함수 호출문의 괄호 ()

아래 코드로 둘의 차이를 확실히 확인해 보세요.

# 함수를 정의하는 단계
def greet(name):  # 여기서 'name'은 매개변수(Parameter)입니다.
    print(f"안녕하세요, {name}님!")

# 함수를 호출(사용)하는 단계
greet("홍길동")  # 여기서 "홍길동"은 인수(Argument)입니다.

반환값(Return Value)의 모든 것

return은 함수가 임무를 수행한 후 내놓는 ‘결과 보고서’입니다. 이 결과값(반환값)은 변수에 저장하여 재사용하거나, 다른 계산에 즉시 활용하거나, 화면에 출력하는 등 다양하게 사용할 수 있습니다.

def add(a, b):
    result = a + b
    return result  # a와 b를 더한 결과(result)를 반환합니다.

# add 함수의 반환값(15)이 sum_result 변수에 저장됩니다.
sum_result = add(10, 5)
print(sum_result) # 출력: 15

만약 함수에 return 문이 없다면 어떨까요? 마치 어떤 일을 시켰는데 결과물을 가져오지 않는 것과 같습니다. 이런 경우, 함수는 아무것도 없다는 의미의 None이라는 특별한 값을 자동으로 반환합니다. return은 함수의 실행을 즉시 종료시키고 값을 반환하는 역할도 하므로, 함수의 흐름을 제어하는 데 중요하게 사용됩니다.

책상 위에 놓인 함수 상자에 매개변수와 인수 카드가 들어가고 반환값 카드가 나오는 개념을 보여주는 장면

실전! 단계별 함수 만들기 (예제 중심)

이제 이론을 바탕으로 실제 함수를 만들어 보겠습니다. 각 코드를 직접 입력하고 실행하며 차이를 느껴보세요.

1단계: 매개변수도, 반환값도 없는 가장 기본적인 함수

가장 단순한 형태로, 정해진 동작만 수행합니다. 호출될 때마다 같은 일을 반복합니다.

코드:

def print_hello():
    print("Hello, Python!")

# 함수 호출
print_hello()

실행 결과:

Hello, Python!

2단계: 매개변수는 있지만, 반환값은 없는 함수

외부에서 데이터를 받아(매개변수) 그 데이터를 활용해 특정 동작을 수행합니다. 하지만 결과를 밖으로 돌려주지는 않습니다.

코드:

def print_name(name):
    print(f"제 이름은 {name}입니다.")

# 함수 호출
print_name("김철수")

실행 결과:

제 이름은 김철수입니다.

3단계: 매개변수는 없지만, 반환값은 있는 함수

외부 데이터 없이 자체적으로 값을 만들어내거나 가져와서, 그 결과를 함수 외부로 전달합니다.

코드:

def get_pi():
    return 3.14159

# 함수 호출 및 반환값 사용
pi_value = get_pi()
print(pi_value)

실행 결과:

3.14159

4단계: 매개변수와 반환값 모두 있는 가장 일반적인 함수

외부에서 데이터를 받아(매개변수) 가공한 후, 그 최종 결과를 외부로 전달(반환)하는 가장 일반적이고 활용도 높은 형태의 함수입니다.

코드:

def circle_area(radius):
    area = 3.14 * radius * radius
    return area

# 함수 호출 및 반환값 사용
my_pizza_area = circle_area(10) # 반지름이 10인 피자의 넓이를 구함
print(f"피자의 넓이는 {my_pizza_area}입니다.")

실행 결과:

피자의 넓이는 314.0입니다.

이 네 가지 형태는 파이썬 함수 기본의 뼈대를 이루며, 이들을 조합하여 거의 모든 종류의 파이썬 함수 정의가 가능합니다.

왼쪽에서 오른쪽으로 배열된 네 장의 인덱스 카드로 함수의 4단계 예제를 단계별로 보여주는 작업 공간

이것만 알면 함수 에러 절반으로 줄이기

함수를 처음 사용할 때 몇 가지 흔한 실수를 저지르곤 합니다. 다음 팁과 주의사항을 숙지하면 불필요한 오류를 크게 줄일 수 있습니다.

자주 발생하는 실수 해결 방법 및 설명
들여쓰기 오류 (IndentationError) def 줄 다음부터 함수의 몸통 부분은 반드시 동일한 간격(주로 4칸)으로 들여써야 합니다. 파이썬은 들여쓰기로 코드의 논리 구조를 파악하므로, 이는 선택이 아닌 필수 문법입니다.
함수 호출 시 괄호 () 빠뜨리기 my_function은 함수 코드 자체를 의미하며, my_function()은 함수를 ‘실행(호출)’하라는 명령입니다. 함수를 실행하고 싶다면 반드시 이름 뒤에 괄호를 붙여야 합니다.
인수 개수 불일치 (TypeError) def my_func(a, b): 처럼 2개의 매개변수를 정의했다면, 호출할 때도 my_func(10, 20)와 같이 2개의 인수를 전달해야 합니다. 개수가 다르면 오류가 발생합니다.

전문가처럼 보이는 추가 팁

  • 함수 이름 짓기 (Naming Convention): 파이썬 공식 스타일 가이드(PEP 8)에서는 함수 이름을 지을 때, 여러 단어를 밑줄(_)로 연결하는 스네이크 케이스(snake_case)를 사용하도록 권장합니다. (예: calculate_average_score, send_email_to_user) 이는 가독성을 크게 향상시킵니다.
  • 독스트링(Docstring) 작성 습관: 함수 정의 바로 아랫줄에 큰따옴표 세 개("""...""")를 사용해 함수에 대한 설명을 작성하는 습관을 들이세요. 이 독스트링은 help(함수이름) 명령어로 언제든 확인할 수 있어, 미래의 나 자신과 동료 개발자를 위한 최고의 설명서가 됩니다.

모니터에 들여쓰기 오류 괄호 누락 인수 개수 불일치와 네이밍 규칙 독스트링 팁이 적힌 체크리스트가 표시된 화면

결론: 함수는 최고의 성장 도구입니다

지금까지 우리는 ‘함수란 무엇인가‘라는 근본적인 질문에 답하고, def 키워드를 사용한 ‘파이썬 함수 정의‘ 방법, 그리고 매개변수, 인수, 반환값의 역할까지 파이썬 함수 기본의 모든 것을 단계별 예제와 함께 살펴보았습니다.

함수는 단순히 반복적인 코드를 줄이는 기술을 넘어, 큰 문제를 작은 단위로 나누어 생각하고 해결하는 프로그래밍적 사고방식을 길러주는 가장 강력한 훈련 도구입니다. 오늘 배운 내용을 바탕으로 ‘두 숫자를 곱하는 함수’나 ‘내 이름을 소개하는 함수’처럼 자신만의 간단한 함수를 꼭 만들어보세요. 직접 코드를 작성하고 실행하는 경험이 함수를 당신의 것으로 만들어 줄 것입니다.

다음 단계에서는 함수에 기본값을 설정하는 ‘기본값 매개변수’, 순서에 상관없이 값을 전달하는 ‘키워드 인수’, 그리고 한 줄로 만드는 미니 함수 ‘람다(lambda)’ 등 더 유용한 함수 기법들을 배워볼 준비가 되셨습니다. 꾸준한 연습과 함께라면 당신도 곧 함수를 자유자재로 사용하는 멋진 개발자가 될 수 있을 것입니다.

포스트잇과 플로우차트로 모듈식 함수들이 모여 큰 프로그램을 이루는 모습을 보며 자신감 있게 서 있는 개발자

자주 묻는 질문 (FAQ)

Q: 파이썬에서 함수를 정의할 때 사용하는 키워드는 무엇이고, 그 의미는 무엇인가요?

A: 파이썬에서는 def 키워드를 사용하여 함수를 정의합니다. def는 ‘정의하다(define)’의 줄임말로, 파이썬에게 새로운 함수를 만들겠다고 알리는 신호입니다.

Q: 매개변수(Parameter)와 인수(Argument)의 차이점은 무엇인가요?

A: 매개변수는 함수를 정의할 때 사용하는 ‘자리표시자’ 변수이고, 인수는 함수를 실제로 호출할 때 그 자리에 전달하는 ‘실제 값’입니다. 예를 들어 def add(a, b):에서 ab는 매개변수이고, add(3, 5)에서 35는 인수입니다.

Q: 함수에서 return 문은 어떤 역할을 하나요? 만약 return이 없다면 어떻게 되나요?

A: return 문은 함수의 실행 결과를 함수를 호출한 곳으로 돌려주는 역할을 합니다. 또한 return을 만나면 함수는 즉시 실행을 종료합니다. 만약 함수에 return 문이 명시적으로 없다면, 함수는 자동으로 아무것도 없다는 의미의 특별한 값인 None을 반환합니다.

이 글이 마음에 드세요?

RSS 피드를 구독하세요!

댓글 남기기