Python의 데코레이터

isTuna·2021년 4월 2일
0

Python 공부

목록 보기
9/10

Decorator란?

Decorator라는 단어를 보면 무언가 꾸며주는 역할을 할 것 같지 않습니까? Decorator는 함수를 입력받아 그 함수에 기능을 추가한 뒤 다시 함수 형태로 반환하는 함수입니다. 쉽게 말해 함수를 꾸며주는 함수라고 생각하시면 됩니다.

Decorator를 사용하게 되면 기존의 함수를 수정하지 않고 기능을 추가할 수 있습니다. 예를 들면 지금까지 만든 모든 함수에 시작과 끝을 알리는 기능을 넣고 싶다고 합시다.

def function_a():
	# print("function start!")
	print("function a")
   	# print("function end!")
    
def function_b():
	# print("function start!")
	print("function b")
   	# print("function end!")
    
def function_c():
	# print("function start!")
	print("function c")
   	# print("function end!")

위와 같이 모든 함수를 수정할 순 있겠지만 3개가 아니라 100개가 넘는 함수가 있다면 비효율적일 것입니다.

이런 경우에 더 Pythonic한 개발을 하기 위해서는 Decorator를 사용하면 됩니다.

def start_end_decorator(func):
	def wrapper(*args, **kwargs):
       		# print("function start!")
          	func() # 여기서 입력되는 함수 실행
       		# print("function end!")

            return func(*args, **kwargs)
  	return wrapper

위의 코드는 기본적인 구조의 Decorator입니다. 이제 위의 Decorator를 기존의 함수들에 적용하는 방법을 알아보겠습니다.

Decorator 적용법

Decorator를 적용하는 방법은 2가지가 있습니다.


function_a = start_end_decorator(function_a)
function_a()

위와 같이 데코레이터에 원하는 함수를 넘기는 방식이 있습니다. 하지만 이것보다 더 쉽고 코드가 보기 좋은 방법이 있습니다.


@start_end_decorator
def function_a():
	print("function a")

위의 코드처럼 함수를 선언할때 위에 @를 붙여 데코레이터를 호출할 수 있습니다.


profile
청소연구소 개발자 (2021. 05~ )

0개의 댓글