반응형
Decorator
함수의 내부를 수정하지 않고 기능에 변화를 주고 싶을 때 사용한다
일반적으로 함수의 전처리나 후처리에 대한 필요가 있을때 사용을 한다
또한 데코레이터를 이용해, 반복을 줄이고 메소드나 함수의 책임을 확장한다
@ 으로 시작하는 것이 데코레이터들이다
def trace(func): # 호출할 함수를 매개변수로 받음
def wrapper():
print(func.__name__, '함수 시작') # __name__으로 함수 이름 출력
func() # 매개변수로 받은 함수를 호출
print(func.__name__, '함수 끝')
return wrapper # wrapper 함수 반환
@trace # @데코레이터
def hello():
print('hello')
@trace # @데코레이터
def world():
print('world')
hello() # 함수를 그대로 호출
world() # 함수를 그대로 호출
'''
실행 결과
hello()
hello 함수 시작
hello
hello 함수 끝
world()
world 함수 시작
world
world 함수 끝
'''
반응형
'Python' 카테고리의 다른 글
Class 예제(2) - 두 점 사이의 거리, 기울기 (0) | 2022.05.17 |
---|---|
Class 예제 (1) - 은행 계정 클래스 (0) | 2022.05.17 |
OOP (객체지향 프로그래밍) (0) | 2022.05.17 |
Python - iterator , generator (0) | 2022.05.16 |
[21.05.03] *args 와 **kwargs (0) | 2022.05.03 |