반응형
1. 데코레이터
클로저인데 인수가 함수인 부분이 차이가 있으며, 다양한 상황에서 동일한 기능을 수행하는 함수가 필요할 때 데코레이터를 만들어 사용하면 유리합니다.
일반적으로 로그를 남겨 redirecting 등 부차적 스테이지로 넘기거나, 함수의 실행시간, 메모리 점유시간 등을 확인하기 위한 용도로 많이 사용됩니다.
1.장점
- 공통 함수 작성(로깅, 프레임워크, 유효성 체크 등 )을 통한 간결한 코드라인과 중복 제거
- 조합 사용이 편리
2.단점
- 가독성 좋지 못하고 디버깅이 이렵다.
- 특정 기능에 한정된 함수는 단일 함수로 작성하는게 좋다
1) 사용법
def decorator_func(func):
def wrap_func():
return func()
return wrap_func()
def target():
print ("done")
example = decorator_func(target)
example
>> done
데코레이터는 기본적으로 클로저 형태입니다.
def decorator_func(func):
def wrap_func():
print('{} start'.format(func.__name__))
return func()
return wrap_func()
@decorator_func
def target1():
print('target1 done')
@decorator_func
def target2():
print('target2 done)
target1()
>>> target1 start
target2 done
target2()
>>> target2 start
target2 done
사용시에는 적용하고자 하는 함수 위에 @func_name 을 해주면 됩니다.
반응형