언어/Python

파이썬 데코레이터에 대해서?

쟈누이 2020. 6. 20. 18:33
반응형

 

파이썬에서 데코레이터란 기존의 코드에 여러가지 기능을 추가하는 파이썬 구문.

@decorator
def function():
	print("I am a decorator!")

위와 같은 코드를 데코레이터라고 말한다. 

 

" @ " 심볼과 데코레이터 함수의 이름을 붙이는 간단한 구문을 사용하면 

데코레이터를 사용할 수 있다.

 

대상함수를 wrapping 하고, 이 wrapping 된 함수의 앞 뒤에 추가적으로

꾸며질 구문들을 정의하여 재사용이 쉽도록 만들어 주는 것이다.

하나의 함수를 취해서 또 다른 함수를 반환하는 함수이다. 

 

def document_it(func):
	def new_function(*args, **kwargs):
    	print('running function:', func.__name__)
        print('positional arguments:', args)
        print('keyword arguments:', kwargs)
        
        result = func(*args, **kwargs)
        print('result:', result)
        return result
        
    return new_function

document_it 함수에 어떤 func 함수 이름을 전달하든지 간에 document_it( ) 는

추가 선언문이 포함된 새 함수를 얻는데. 데코레이터는 실제로  func 함수로부터 코드를 실행하지 않는다.

하지만 document_it( ) 함수로부터 func 를 호출하여 결과뿐만 아니라 새로운 함수를 얻는다.

 

데코레이터를 사용하는 방법은 그냥 @데코레이터_이름 추가만 하면된다.

 

@document_it
def add_ints(a,b):
	return a + b
    

>> add_ints(3,5)
start function add_int
positional arguments : (3,5)
keyword arguments : { }
result: 8
8

add_int 함수는 데코레이터로 설정된 document_it 의 값들을 가져와

아래와 같이 add_ints 의 결과값을 풍부하게 표현할 수 있다.

 

참고 링크

http://schoolofweb.net/blog/posts/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%8D%B0%EC%BD%94%EB%A0%88%EC%9D%B4%ED%84%B0-decorator/

 

SchoolofWeb :: 파이썬 - 데코레이터 (Decorator)

파이썬 데코레이터 (Decorator)강좌

schoolofweb.net

https://bluese05.tistory.com/30

 

python decorator (데코레이터) 어렵지 않아요

Python decorator (데코레이터)  Python 으로 작성된 Opensource 의 코드들을 보다 보면, 아래와 같이 @ 로 시작하는 구문 들을 볼 수 있다. @decorator_ def function(): print "what is decorator?"  decorat..

bluese05.tistory.com

https://dojang.io/mod/page/view.php?id=2427

 

파이썬 코딩 도장: 42.1 데코레이터 만들기

Unit 42. 데코레이터 사용하기 파이썬은 데코레이터(decorator)라는 기능을 제공합니다. 데코레이터는 장식하다, 꾸미다라는 뜻의 decorate에 er(or)을 붙인 말인데 장식하는 도구 정도로 설명할 수 있습

dojang.io

 

반응형