함수 기초
1 / 8

함수 기초

코드의 반복을 피하고 기계처럼 모듈화하기

def 예약어, 매개변수와 return, 변수 유효 범위(Scope), 조기 종료 설계

오늘의 수업 목표

  • 함수의 모듈화 원리를 이해하고 코드를 재사용 가능한 부품으로 분리한다.
  • 매개변수와 return문의 데이터 흐름을 명확하게 연결한다.
  • 지역 변수와 전역 변수의 생명 주기와 Scope 한계를 구분하여 코딩한다.
  • return문을 활용하여 에러 상황을 초입에 거르는 조기 탈출을 적용한다.

제빵기로 알아보는 함수의 구조

재료(Input)를 넣고, 약속된 가공 작업을 거쳐, 빵(Output)을 뱉는 자동 장치

  • 함수 정의: def add(a, b): return a + b
  • 입력(Parameters): a, b
  • 출력(Return): a + b 결과값

한 번 올바르게 정의하면 언제든 호출하여 동일 수식을 재사용할 수 있습니다.

함수의 선언 def 와 호출

기계를 셋팅하는 과정(정의)과 기계를 켜서 작동하는 과정(호출)

# 1. 함수 정의
def introduce(name, level):
    greeting = f"용사 {name} (LV.{level}) 입장!"
    return greeting  # 돌려줄 값 명시

# 2. 함수 호출
msg = introduce("신화속", 15)
print(msg)  # "용사 신화속 (LV.15) 입장!"

변수의 유효 범위 (Scope)

전역 변수(Global)와 지역 변수(Local)는 생성 공간과 활동 무대가 다릅니다.

# 전역 변수
hp = 100

def heal():
    # 지역 변수
    heal_amount = 30
    print(hp + heal_amount)  # hp(전역)와 heal_amount(지역) 동시 참조 가능

heal()
# print(heal_amount)  # ⚠️ 함수 밖이므로 에러 발생! (NameError)

return을 통한 조기 종료 (Early Exit)

에러나 올바르지 않은 값 감지 즉시 return으로 함수 처리를 긴급 정지합니다.

def level_up(current_level):
    # 예외 선처리
    if current_level >= 99:
        print("이미 최고 레벨입니다.")
        return  # ⚠️ 아래쪽 계산식을 건너뛰고 함수 조기 종료 및 복귀

    # 정상 처리 영역 (들여쓰기 단계 축소 혜택)
    new_level = current_level + 1
    print(f"레벨업! 새로운 레벨: {new_level}")

함수 작성 시 자주 하는 실수

# 1. return 지정을 까먹는 에러
def get_double(x):
    val = x * 2  # return이 없음!
# res = get_double(5) ==> res에는 None이 들어감

# 2. 지역 변수 소멸 무시
def calc():
    temp_result = 50
calc()
# print(temp_result)  # ⚠️ 이미 지워진 지역 변수를 호출하여 NameError 발생

함수 코딩 가이드 요약

설계 요소주요 가이드라인
매개변수와 return인풋 개수와 반환 위치를 맞추며, 값을 밖으로 뺄 때는 반드시 return 지정
변수 스코프함수 안에서만 사용될 임시 수치는 지역 변수로 격리하여 부작용 예방
조기 종료 패턴예외적 검증(실패 상황)은 상단에 배치해 함수 진행 차단막 생성
ESC — 수업으로 돌아가기  ·  F — 전체화면