-
Python 문법 기초 20 - 함수 장식자(decorator)Python 2022. 10. 22. 16:36
함수 장식자 (decorator : @ - meta 기능이 있다)
장식자는 또 다른 함수를 감싼 함수이다.
주 함수가 호출되면 그의 반환값이 장식자에게 건네진다.
그러면 장식자는 포장된 함수로 교체하여 함수를 돌려준다.
def make2(fn): return lambda:'안녕 ' + fn() def make1(fn): return lambda:'반가워 ' + fn() def hello(): return '홍길동' hi = make2(make1(hello)) # hello의 리턴값을 make1에서 주소로 받고 거기서 다시 실행되서 make2로 주소를 리턴해준다. # make2의 주소를 최종적으로 리턴해준다. print(hi()) print() @make2 @make1 # 함수 위에 @함수명을 입력하면 함수를 감싸게 된다. def hello2(): return '고길동' print(hello2()) <console> 안녕 반가워 홍길동 안녕 반가워 고길동
주소값을 리턴하므로(클로저 사용) 주소를 건내받으며 최종적으로 hi라는 변수에 주소가 들어가고 그것을 호출하면 3개의 함수가 호출된다.
make1, make2 를 @로 감싸서 호출하므로써 함수를 감싸게 된다. 최종적으로 위와 같이 호출된다.
'Python' 카테고리의 다른 글
Python 문법 기초 22 - 모듈(module) (0) 2022.10.22 Python 문법 기초 21 - 재귀 함수(Recursive function) (0) 2022.10.22 Python 문법 기초 19 - 일급함수와 람다함수 (0) 2022.10.22 Python 문법 기초 18 - 클로저(closure) (0) 2022.10.22 Python 문법 기초 17 - argument(인자) 와 parameter(매개변수) (0) 2022.10.22