파이썬에서는 어떤 값이 None
인지 확인하는 코드를 자주 작성하게 된다.
예를 들어 아래와 같은 함수가 있다고 하자.
def half(n):
return n / 2.0
위와 같은 함수에 만약 None
을 넣게 되면 에러가 날 것이다.
그래서 에러를 방지하려면 아래와 같이 입력값이 None
인지 검사하는 코드를 넣으면 된다.
def safe_half(n):
if n is not None:
return n / 2.0
else:
return None
그런데 이렇게 필요할 때마다 함수 안에 None
을 검사하는 코드를 넣는 것은 너무 번거롭다.
아래와 같이 데코레이터를 이용하면 None
을 검사하는 반복되는 코드를 줄일 수 있다.
def maybe(f):
def wrapper(x):
if x is not None:
return f(x)
else:
return None
return wrapper
@maybe
def half(n):
return n / 2.0