def 예약어, 매개변수와 return, 변수 유효 범위(Scope), 조기 종료 설계
재료(Input)를 넣고, 약속된 가공 작업을 거쳐, 빵(Output)을 뱉는 자동 장치
def add(a, b): return a + ba, ba + b 결과값한 번 올바르게 정의하면 언제든 호출하여 동일 수식을 재사용할 수 있습니다.
기계를 셋팅하는 과정(정의)과 기계를 켜서 작동하는 과정(호출)
# 1. 함수 정의
def introduce(name, level):
greeting = f"용사 {name} (LV.{level}) 입장!"
return greeting # 돌려줄 값 명시
# 2. 함수 호출
msg = introduce("신화속", 15)
print(msg) # "용사 신화속 (LV.15) 입장!" 전역 변수(Global)와 지역 변수(Local)는 생성 공간과 활동 무대가 다릅니다.
# 전역 변수
hp = 100
def heal():
# 지역 변수
heal_amount = 30
print(hp + heal_amount) # hp(전역)와 heal_amount(지역) 동시 참조 가능
heal()
# print(heal_amount) # ⚠️ 함수 밖이므로 에러 발생! (NameError) 에러나 올바르지 않은 값 감지 즉시 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 지정 |
| 변수 스코프 | 함수 안에서만 사용될 임시 수치는 지역 변수로 격리하여 부작용 예방 |
| 조기 종료 패턴 | 예외적 검증(실패 상황)은 상단에 배치해 함수 진행 차단막 생성 |