파이썬의 데코레이터
이름 자체에서 알 수 있듯이 데코레이터는 장식, 포장을 의미합니다. 테이블을 꾸미는 것은 꽃, 조명 등을 추가/배치하여 테이블을 더 아름답게 만드는 것을 의미합니다. 따라서 장식이란 기본적으로 다른 것을 추가/수정하여 사물을 다르게 보이게 하는 것을 의미합니다.
비슷한 방식으로 파이썬에서 데코레이터는 기능을 데코레이션하거나 래핑하는 것을 의미합니다. 실제 기능을 실행하기 전/후에 기능을 더 추가할 수 있습니다.
예를 들어 이것을 봅시다.
인수가 없는 데코레이터 예:
# Normal function
def add_num():
return 2 + 3
# Decorator function
def decorator_func(fun):
def wrapper():
res_str = f'Sum of 2 + 3 is '
re = fun()
return res_str + str(re)
return wrapper
일반 함수 호출:
add_num()
산출:
5
데코레이터 함수 호출:
dec_result = decorator_func(add_num)
print(dec_result)
산출:
Sum of 2 + 3 is 5
Decorator 함수에서 결과를 보다 명확하게 하기 위해 추가 문자열 값을 추가했습니다. 이런 식으로 데코레이터는 매우 유용합니다..
데코레이터 함수를 직접 호출하는 대신 아래와 같이 @ 기호를 사용하여 주석을 사용할 수 있습니다.
@decorator_func
def add_num():
return 2 + 3
데코레이터 주석이 있는 일반 함수 호출:
dec_annot_call = add_num()
print(dec_annot_call)
아웃아웃:
Sum of 2 + 3 is 5
인수가 있는 데코레이터의 예:
데코레이터 함수에 인수를 전달하려면 아래와 같이 키워드 arg params *args 및 *kwargs를 사용해야 합니다.
# Decorator function with arguments
def decorator_func(fun):
def wrapper(*args, **kwargs):
res_str = f'Sum of {args[0]} + {args[1]} is '
re = fun(*args, **kwargs)
return res_str + str(re)
return wrapper
# Decorator annotations for normal function with args
@decorator_func
def add_num(arg1, arg2):
return arg1 + arg2
# Calling with args
dec_annot_call = add_num(8, 9)
print(dec_annot_call)
산출:
Sum of 8 + 9 is 17
Reference
이 문제에 관하여(파이썬의 데코레이터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/chanduthedev/decorators-in-python-1g9j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)