
조기 반환(early return)은 코드 실행 과정이 함수 끝까지 도달하기 전에 반환하는 기법이다.
가독성이 높아지고 예외를 조금 더 깔끔하고 빠르게 처리 가능
def total_price(quantity, price):
total = quantity * price
if total > 100:
# 실행 코드
return total * 0.9
return total
print(total_price(9, 15)) # 121.5
보호 구문(guard clauses)은 본격적인 로직이 진행되기 전 예외 처리 코드를 추가하는 기법이다.
초기에 입력값이 유효한지 검사하는 등의 작업을 통해 바로 함수를 종료할 수 있다.
def calculate_average(numbers):
if numbers is None: # 값이 존재하지 않으면 None 반환 (예외)
return None
if not isinstance(numbers, list): # numbers가 list가 아니면 None 반환 (예외)
return None
if len(numbers) == 0: # numbers의 길이가 0이면 None 반환 (예외)
return None
total = sum(numbers)
average = total / len(numbers)
return average
합성 함수(composite method)는 2개 이상의 함수를 활용하여 함수를 추가로 만드는 기법이다.
보통 합성 함수는 람다식을 활용한다.
def add_three(x):
return x + 3
def square(x):
return x * x
composed_function = lambda x: square(add_three(x))
print(composed_function(3)) # (3 + 3) * (3 + 3) = 36