본문 바로가기

python

함수 장식자 decorator

 

함수 장식자 decorator

 

함수 장식자는 해당 주함수를 감싼 함수라고 보면 좋다. 

보통 함수의 추가기능을 구현하고 싶을때 사용한다.

예시의 1번 방식과 2번 방식을 비교해보면 이해하기 쉽다

# 함수 장식자 (decorator : @ - meta 기능이 있다)
# 장식자는 또 다른 함수를 감싼 함수다. 주함수가 호출되면 그의 반환값이 장식자에게 건네진다.
# 그러면 장식자는 포장된 함수로 교체하여 함수를 돌려준다.

def make2(fn):
    return lambda:'안녕' + fn()

def make1(fn):
    return lambda:'반가워' + fn()

def hello():
    return '홍길동'

# 1번 방식
hi = make2(make1(hello))
print(hi())

print()
# 2번 방식
@make2
@make1
def hello2():
    return '고길동'

print(hello2())

안녕반가워홍길동

안녕반가워고길동

'python' 카테고리의 다른 글

module - 표준모듈  (0) 2022.10.06
재귀함수(Recursive function), factorial  (0) 2022.10.06
일급객체와 일급함수, 람다함수  (0) 2022.10.06
클로저(closure)  (0) 2022.10.06
매개변수와 인자 , 가변인수  (0) 2022.10.06