반응형
함수를 수정하지 않고 유연하게 함수에 특정 동작을 추가하거나 작동 방식을 바꿀 수 있다.
decorate() 함수는 함수를 인자로 받고, 내부 wrapper() 함수는 decorate() 함수의 인자로 넘어온 함수를 호출한다.
hello() 함수를 decorate() 함수의 인자로 넘긴 후, hello2 변수에 할당하면 "hello" 출력 전에 before, 후에 "after"이 출력되는 것을 볼 수 있다.
def hello():
print("hello")
def decorate(func):
def wrapper():
print("before")
func()
print("after")
return wrapper
hello2=decorate(hello)
hello2()
@ 기호와 함께 함수 헤더 위에 데코레이터를 사용하여 위 내용을 동일하게 표현할 수 있다.
def decorate(func):
def wrapper():
print("before")
func()
print("after")
return wrapper
@decorate
def hello():
print("hello")
hello()
반응형
'programming > python' 카테고리의 다른 글
딕셔너리 자료형 (0) | 2023.05.27 |
---|---|
zip 내장함수 (0) | 2023.05.27 |
list 자료형 (0) | 2023.05.06 |
hashlib (0) | 2023.02.18 |
ord()/chr() (0) | 2023.01.10 |