본문 바로가기

파이썬

Decorator

반응형

반복하는 내용을 함수로 묶어 여러 함수에서 일괄적으로 사용할 때 사용

def type_checker(func):
    def inner_function(digit1, digit2):
        if type(digit1) != int or type(digit2) != int:
            print('only integer support')
            return
        func(digit1,digit2)
    return inner_function
    
@type_checker
def test(digit1,digit2):
	print(digit1+digit2)
    

이런식으로 @만을 이용하여 함수에 적용할 수 있다.

@를 이용하면 type_checker안에 파라미터로 test 함수가 들어가는 방식이다.

 

안에 파라미터가 들어간 데코레이터도 만들 수 있다

def mark_html(tag):
    def deco(func):
        def inner_func(title):
            return '<'+tag+'>'+func(title)+'</'+tag+'>'
        return inner_func
    return deco

@mark_html('h1')
def print_title(title):
    return title
title = '테스트'
print(print_title(title))

 

'파이썬' 카테고리의 다른 글

[Python] list, set, dict 컨테이너  (0) 2020.10.09
[Python] for else  (0) 2020.10.06
First class function, Closure  (0) 2020.09.20
char 형 -> int 형 변환  (0) 2020.09.19