데코레이터
데코레이터란
함수의 앞,뒤로 부가적인 기능을 넣어 주고 싶을 경우 사용
클로저를 이용해서 생성
적용하고 싶은 함수앞에 @데코레이터
#데코레이터
#함수의 앞 뒤로 부가적인 기능을 넣어주고 싶을 때 사용
#로깅, 권한확인
#함수내부의 중복을 데코레이터가 제거해줄수 있다.
#데코레이터 생성하기
def logger(func):
def inner_wrapper():
print("함수시작")
func() #함수실행
print("함수끝")
return inner_wrapper
#클로저를 이용해서 데코레이터 생성
@logger
def print_hello():
print("hello ehdus")
@logger
def print_bye():
print("bye ehdus")
print_hello()
print_bye()
#@logger라는 데코레이터가 지정되어있다.
#그러면 데코레이터를 먼저 찾는다.
#그리고 print_hello라는 함수를 logger(func) 매개변수자리로 올린다.
#매개변수를 받는 경우
def logger(func):
def inner_wrapper(arg):
print("함수시작")
func(arg) #함수실행
print("함수끝")
return inner_wrapper
@logger
def print_hello(name):
print("hello", name)
@logger
def print_bye(name):
print("bye", name)
print_hello("도연")
print_bye("도연")
심화학습필요하다.