728x90
반응형
- Decolator : 함수를 받아 명령을 추가한 뒤 이를 다시 함수의 형태로 반환하는 함수
- 함수의 내부를 수정하지 않고 기능에 변화를 주고 싶을 때 사용하며, 일반적으로 함수의 전처리나 후처리에 대한 필요가 있을 때 사용을 한다. 또한, Decolator를 이용하여 반복을 줄일 수 있다.
예를 들어 아래와 같은 함수가 정의되어 있다고 가정을 하자.
def plus(a, b):
print("start") # code 1
result = a + b # code 2
print(f"result : {result}") # code 3
return result
def minus(a, b):
print("start") # code 1
result = a - b # code 4
print(f"result : {result}") # code 3
return result
여기서 중복되는 code 1, 3을 데코레이터를 이용하면 다음과 같이 바뀔 수 있다.
def disp(func):
def wrapper(*args, **kwargs):
print("start") # code 1
result = func(*args, **kwargs) # code 2, 4
print(f"result : {result}") # code 3
return result
return wrapper
@disp
def plus(a, b):
result = a + b # code 2
return result
@disp
def minus(a, b):
result = a - b # code 4
return result
plus(1,2)
<출력결과>
start
result : 3
minus(1,2)
<출력결과>
start
result : -1
728x90
반응형
'Study > FastCampus' 카테고리의 다른 글
[Numpy] Numpy 개요 및 행렬 데이터 만들기 (0) | 2021.05.17 |
---|---|
[python] map(), filter(), reduce() 구현 (0) | 2021.05.17 |
[python] Map(), Filter(), reduce() (0) | 2021.05.04 |
[python] 함수 default 파라미터 (0) | 2021.05.03 |
[python] 컴프리핸션(comprehension) 속도 비교 (0) | 2021.05.03 |