안녕하세요! 지난 시간에는 파이썬에서 함수를 정의하고 호출하는 기본적인 방법을 배웠습니다. 이제 특정 작업을 수행하는 코드를 묶어서 필요할 때마다 재사용할 수 있게 되었죠!
하지만 지금까지 만든 함수는 항상 정해진 작업을 똑같이 반복할 뿐이었습니다. 예를 들어, add_numbers() 함수는 항상 10과 20만 더했습니다. 만약 다른 숫자를 더하고 싶다면 어떻게 해야 할까요? 그리고 함수가 계산한 결과를 화면에 출력하는 것을 넘어, 그 결과를 다른 곳에서 활용하고 싶다면요?
이번 시간에는 함수를 더욱 유연하고 강력하게 만들어주는 두 가지 핵심 개념인 **매개변수(Parameter)**와 **리턴값(Return Value)**에 대해 자세히 알아보겠습니다.
Part 1: 매개변수(Parameter) - 함수에 데이터 전달하기
매개변수는 함수를 호출할 때 함수 내부로 전달되는 입력 값을 받는 통로 역할을 합니다. 함수를 정의할 때 매개변수를 지정해두면, 함수를 호출할 때마다 다른 데이터를 전달하여 함수가 다양한 작업을 수행하도록 만들 수 있습니다.
1. 매개변수를 가진 함수 정의
- 함수를 정의할 때 괄호 () 안에 매개변수 이름을 쉼표(,)로 구분하여 나열합니다.
기본 형식:
def 함수이름(매개변수1, 매개변수2, ...):
# 매개변수들을 사용하여 실행할 코드
예시: 이름을 입력받아 인사하는 함수
# 파일 이름: parameter_greet.py
def greet(name): # name이 매개변수입니다.
print(f"안녕하세요, {name}님!")
print("환영합니다!")
# 함수 호출 시 값(인자, Argument) 전달
greet("김파이") # "김파이"가 name 매개변수로 전달됩니다.
greet("이코딩") # "이코딩"이 name 매개변수로 전달됩니다.
user_name = "최프로"
greet(user_name) # 변수도 인자로 전달할 수 있습니다.
- greet(name)에서 name은 이 함수가 호출될 때 값을 받을 매개변수입니다.
- greet("김파이")에서 "김파이"는 greet 함수로 전달되는 **인자(Argument)**입니다. 이 인자가 name 매개변수에 할당되어 함수 내부에서 사용됩니다.
[VS Code 터미널 출력]

2. 여러 개의 매개변수 사용하기
- 함수는 필요한 만큼 여러 개의 매개변수를 가질 수 있습니다.
예시: 두 숫자를 더하는 함수
# 파일 이름: parameter_add_two_nums.py
def add_numbers(num1, num2): # num1과 num2 두 개의 매개변수
sum_result = num1 + num2
print(f"두 숫자의 합: {sum_result}")
add_numbers(10, 20) # 10이 num1에, 20이 num2에 전달됩니다.
add_numbers(5, 7) # 5가 num1에, 7이 num2에 전달됩니다.
a = 100
b = 50
add_numbers(a, b) # 변수도 순서대로 전달됩니다.
- 함수를 호출할 때 전달하는 인자의 개수와 순서는 함수 정의의 매개변수와 일치해야 합니다.
[VS Code 터미널 출력]

Part 2: 리턴값 (Return Value) - 함수의 결과 돌려받기
리턴값은 함수가 특정 작업을 수행한 후, 그 결과를 함수를 호출한 곳으로 돌려주는 값입니다. return 키워드를 사용하여 값을 반환합니다. 함수가 리턴한 값은 변수에 저장하거나 다른 연산에 사용할 수 있습니다.
1. return 키워드 사용
- 함수 내에서 return 문이 실행되면 함수는 즉시 종료되고, return 뒤에 오는 값을 호출한 곳으로 돌려줍니다.
기본 형식:
def 함수이름(매개변수):
# 작업 수행
return 반환할_값
예시: 두 숫자를 더한 결과값을 반환하는 함수
# 파일 이름: return_add_numbers.py
def add_numbers_with_return(num1, num2):
sum_result = num1 + num2
return sum_result # 계산 결과를 반환합니다.
# 함수를 호출하고 반환값을 변수에 저장
result1 = add_numbers_with_return(10, 5)
print(f"첫 번째 덧셈 결과: {result1}")
result2 = add_numbers_with_return(100, 200)
print(f"두 번째 덧셈 결과: {result2}")
# 반환값을 바로 다른 연산에 사용
final_calculation = add_numbers_with_return(10, 20) * 2
print(f"덧셈 후 2배: {final_calculation}")
- return sum_result: sum_result 변수에 저장된 값을 함수를 호출한 곳으로 돌려줍니다.
- result1 = add_numbers_with_return(10, 5): add_numbers_with_return 함수가 반환한 값(15)이 result1 변수에 저장됩니다.
[VS Code 터미널 출력]

2. return 값의 활용
- return 값은 변수에 저장하거나, 다른 함수의 인자로 전달하거나, 출력하거나, 조건문이나 반복문의 조건으로 사용하는 등 다양하게 활용할 수 있습니다.
예시:
# 파일 이름: return_value_usage.py
def calculate_area(width, height):
area = width * height
return area
room_width = 5
room_height = 8
room_area = calculate_area(room_width, room_height)
print(f"방의 넓이: {room_area} 제곱미터")
if room_area > 30:
print("방이 넓은 편입니다.")
else:
print("방이 아담한 편입니다.")
# 튜플로 여러 값 반환하기 (다음 챕터에서 더 자세히)
def get_user_info():
name = "김정보"
age = 25
return name, age # 여러 값을 쉼표로 구분하여 반환하면 튜플로 묶여서 반환됨
info = get_user_info()
print(f"사용자 정보: {info}") # (김정보, 25) 튜플로 출력
[VS Code 터미널 출력]

Part 3: 매개변수와 리턴값 활용 예제: BMI 계산기
매개변수와 리턴값을 함께 사용하여 유용한 BMI (체질량 지수) 계산기를 만들어봅시다.
# 파일 이름: bmi_calculator.py
def calculate_bmi(weight_kg, height_cm):
"""
체중(kg)과 키(cm)를 입력받아 BMI를 계산하여 반환하는 함수.
BMI = 체중(kg) / (키(m) * 키(m))
"""
height_m = height_cm / 100 # cm를 m로 변환
bmi = weight_kg / (height_m ** 2)
return bmi
def get_bmi_category(bmi_value):
"""
BMI 값에 따라 체중 분류를 반환하는 함수.
"""
if bmi_value < 18.5:
return "저체중"
elif 18.5 <= bmi_value < 23:
return "정상"
elif 23 <= bmi_value < 25:
return "과체중"
elif 25 <= bmi_value < 30:
return "비만"
else:
return "고도 비만"
# 사용자로부터 입력 받기
print("--- BMI 계산기 ---")
user_weight = float(input("체중을 kg 단위로 입력하세요: "))
user_height = float(input("키를 cm 단위로 입력하세요: "))
# 함수 호출하여 BMI 계산
calculated_bmi = calculate_bmi(user_weight, user_height)
bmi_category = get_bmi_category(calculated_bmi)
# 결과 출력
print(f"\n당신의 BMI는 {calculated_bmi:.2f} 입니다.") # 소수점 둘째 자리까지 표시
print(f"당신은 '{bmi_category}' 입니다.")
- calculate_bmi 함수는 체중과 키를 매개변수로 받아 BMI를 계산한 후, 그 값을 return 합니다.
- get_bmi_category 함수는 계산된 bmi_value를 매개변수로 받아, 해당 BMI에 따른 카테고리(예: "정상", "비만")를 문자열로 return 합니다.
- 마지막으로, 사용자 입력을 받아 두 함수를 순서대로 호출하고, 각각의 리턴값을 변수에 저장하여 최종 결과를 출력합니다.
[VS Code 터미널 출력 (사용자 입력 포함)]

(괄호 [] 안의 내용은 사용자가 직접 입력하는 부분입니다. calculated_bmi:.2f는 소수점 둘째 자리까지 표시하는 f-string 포매팅입니다.)
마무리하며
이번 시간에는 파이썬 함수를 더욱 유용하게 만들어주는 **매개변수(Parameter)**와 **리턴값(Return Value)**에 대해 자세히 알아보았습니다.
- 매개변수: 함수 외부에서 함수 내부로 데이터를 전달하는 통로.
- 리턴값: 함수가 작업을 수행한 후, 그 결과를 함수 외부로 돌려주는 값.
이 두 가지 개념은 함수를 독립적이고 재사용 가능한 부품처럼 만들어서 프로그램을 더 효율적이고 체계적으로 구성하는 데 필수적입니다.
다음 포스팅에서는 함수의 매개변수에 미리 값을 지정해두는 기본값(Default Value), 그리고 정해지지 않은 개수의 인자를 받을 수 있는 **가변 인자(*args, **kwargs)**에 대해 알아보겠습니다.
궁금한 점이 있다면 언제든지 질문해주세요! 다음 포스팅에서 만나요!