출력:
========================================
👤 이름: 김철수
💼 직급: 대리
💰 급여: 3,500,000원
========================================
========================================
👤 이름: 이영희
💼 직급: 과장
💰 급여: 4,500,000원
========================================
========================================
👤 이름: 박민수
💼 직급: 사원
💰 급여: 2,800,000원
========================================
반환값(Return): 함수의 결과 받기
return은 함수가 계산한 결과를 돌려주는 거예요. 요리로 치면 “완성된 요리”를 내는 것!
# return 없는 함수 – 그냥 출력만def add_print(a, b):
result = a + b
print(result) # 출력만 함# return 있는 함수 – 값을 돌려줌def add_return(a, b):
result = a + b
return result # 값을 반환# 차이점
add_print(5, 3) # 8 출력 (끝)
x = add_print(5, 3) # 8 출력, x는 None
result = add_return(5, 3) # 반환값을 변수에 저장!print(result * 2) # 16 (결과를 재사용 가능!)
💡 return의 역할: • 함수의 결과값을 돌려줌
• return 만나면 함수 즉시 종료
• 반환값을 변수에 저장하거나 다른 함수에 전달 가능
💰 실전 예제: 할인 가격 계산 함수
자동화 시나리오: 상품 할인 가격을 자동으로 계산
def calculate_discount(price, discount_rate):
“””
할인 가격을 계산하는 함수
price: 원가
discount_rate: 할인율 (0.1 = 10%)
“””
discount_amount = price * discount_rate
final_price = price – discount_amount
return final_price
# 여러 상품의 할인 가격 계산
products = [
{“name”: “노트북”, “price”: 1500000},
{“name”: “마우스”, “price”: 50000},
{“name”: “키보드”, “price”: 120000}
]
print(“🎉 블랙프라이데이 20% 할인!\n”)
for item in products:
original = item[“price”]
discounted = calculate_discount(original, 0.2)
saved = original – discounted
print(f”{item[‘name’]}”)
print(f” 정가: {original:,}원”)
print(f” 할인: {discounted:,}원 (절약: {saved:,}원)\n”)
# 함수 1: 등급 계산def calculate_grade(score):
“””점수를 받아 등급을 반환”””if score >= 90:
return“A”elif score >= 80:
return“B”elif score >= 70:
return“C”elif score >= 60:
return“D”else:
return“F”# 함수 2: 평균 계산def calculate_average(scores):
“””여러 점수의 평균을 반환”””return sum(scores) / len(scores)
# 함수 3: 학생 성적표 출력def print_report_card(name, subjects, scores):
“””학생의 성적표를 출력”””print(“\n” + “=” * 50)
print(f”📋 {name} 학생 성적표”)
print(“=” * 50)
for subject, score in zip(subjects, scores):
grade = calculate_grade(score)
print(f”{subject:<10} {score:>3}점 [{grade}]”)
avg = calculate_average(scores)
final_grade = calculate_grade(avg)
print(“-“ * 50)
print(f”평균: {avg:>5.1f}점 [{final_grade}]”)
print(“=” * 50)
# 함수 4: 반 전체 통계def class_statistics(students):
“””반 전체 통계를 출력”””
all_averages = []
for student in students:
avg = calculate_average(student[“scores”])
all_averages.append(avg)
class_avg = calculate_average(all_averages)
highest = max(all_averages)
lowest = min(all_averages)
print(“\n📊 반 전체 통계”)
print(“=” * 50)
print(f”학급 평균: {class_avg:.1f}점”)
print(f”최고 평균: {highest:.1f}점”)
print(f”최저 평균: {lowest:.1f}점”)
# 학생 데이터
students = [
{
“name”: “김철수”,
“subjects”: [“국어”, “영어”, “수학”, “과학”],
“scores”: [85, 92, 78, 88]
},
{
“name”: “이영희”,
“subjects”: [“국어”, “영어”, “수학”, “과학”],
“scores”: [95, 88, 92, 90]
}
]
# 실행for student in students:
print_report_card(student[“name”], student[“subjects”], student[“scores”])
class_statistics(students)
출력:
==================================================
📋 김철수 학생 성적표
==================================================
국어 85점 [B]
영어 92점 [A]
수학 78점 [C]
과학 88점 [B]
————————————————–
평균: 85.8점 [B]
==================================================
==================================================
📋 이영희 학생 성적표
==================================================
국어 95점 [A]
영어 88점 [B]
수학 92점 [A]
과학 90점 [A]
————————————————–
평균: 91.2점 [A]
==================================================
📊 반 전체 통계
==================================================
학급 평균: 88.5점
최고 평균: 91.2점
최저 평균: 85.8점
와! 함수를 사용하니 코드가 정말 깔끔하고 이해하기 쉽죠? 각 함수가 하나의 명확한 역할을 담당해요!
초보자가 자주 하는 실수 Top 5
실수 1: 함수 정의와 호출 헷갈림
# ❌ 함수 정의만 하고 호출 안 함def say_hello():
print(“안녕!”)
# 아무 일도 안 일어남 – 호출을 안 했으니까!# ✅ 올바른 방법def say_hello():
print(“안녕!”)
say_hello() # 함수 호출해야 실행됨!
실수 2: return 빼먹기
# ❌ return 없으면 None 반환def add(a, b):
result = a + b
# return 없음!
x = add(5, 3)
print(x) # None# ✅ 올바른 방법def add(a, b):
result = a + b
return result # 반환 필수!
실수 3: 매개변수 순서 틀림
# ❌ 순서 주의!def divide(a, b):
return a / b
result = divide(10, 2) # 10 / 2 = 5
result2 = divide(2, 10) # 2 / 10 = 0.2 (순서 바뀜!)# ✅ 키워드 인자로 명확하게
result = divide(a=10, b=2) # 명확!
실수 4: 함수 안에서 전역 변수 수정
# ❌ 전역 변수를 함수에서 직접 수정 (나쁜 습관)
count = 0def increase():
global count # 가능하지만 권장하지 않음
count += 1# ✅ 올바른 방법: 매개변수와 반환값 사용def increase(count):
return count + 1
count = 0
count = increase(count) # 명확하고 안전!
축하합니다! 🎉 이제 여러분은 함수를 활용해서 코드를 재사용하고, 복잡한 프로그램을 간단하게 만들 수 있어요!
🎯 오늘 배운 것 체크리스트: ✅ 함수가 뭔지 (요리 레시피 비유)
✅ def 키워드로 함수 정의
✅ 매개변수로 값 전달
✅ return으로 결과 반환
✅ 기본값 매개변수
✅ 여러 값 반환하기
✅ 람다 함수 (한 줄 함수)
✅ 실전 프로젝트 (성적 관리 시스템)
✅ 자주 하는 실수 5가지
✅ 유용한 내장 함수들
함수의 핵심 원칙:
하나의 함수는 하나의 일만 – 역할을 명확하게
함수명은 동사로 – calculate, print, get, set 등
매개변수는 적을수록 좋음 – 보통 3개 이하 권장
주석 달기 – 무엇을 하는 함수인지 설명
다음 시리즈에서는 모듈과 패키지를 배워서 다른 사람이 만든 함수들을 가져다 쓰는 방법을 알아볼 거예요!