Archive

[파이썬 기초] 데코레이터 본문

공부/Python

[파이썬 기초] 데코레이터

mariabeetle 2017. 10. 3. 03:25

1. 데코레이터(Decorator)

- 함수에 부가 기능을 추가할 수 있다.

- 데코레이터를 정의할 때 함수 오브젝트를 반환하도록 정의해야 한다. 따라서 데코레이터를 정의할 때 함수A안에 함수B를 정의하고 함수 B의 오브젝트를 반환하도록 구현해야한다.   


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 실행 시간을 측정하는 데코레이터
import time
def time_log(func):
    def wrapper(*args, **kwargs):
        #전처리
        import datetime
        start = datetime.datettime.today()
        print("----start", func.__name__)
        #함수 실행
        result = func(*args, **kwargs)
        #후처리
        end = datetime.datetime.today()
        delta = end - start
        print("----end", func.__name__, delta, "sec")
    return wrapper
 
@time_log
def test1():
    print("sleep 1sec")
    time.sleep(1)
 
test1()
 
cs


2. 언제 사용할까?

- 데코레이터를 사용하면 어느 함수를 언제 몇 번 호출했는지 알아볼 수 있어서 프로그램의 로그를 표시할 때 사용하면 편하다.

- 특정 사이트에서 데이터를 가져올 때 이미 데이터를 가져온 상태라면 캐시에서 가져오고, 캐시가 없으면 사이트에서 데이터를 가져오는 기능을 갖춘 데코레이터를 만들 수 있다.

- 함수에 들어온 인수값에 대한 검증 역시 데코레이터로 해결할 수 있다.

'공부 > Python' 카테고리의 다른 글

[파이썬 기초] 상속  (0) 2017.10.03
[파이썬 기초] 클래스  (0) 2017.10.03
[파이썬 기초] 리스트 내장 표기  (0) 2017.10.03
[파이썬 기초] 정규표현  (0) 2017.10.03
[파이썬 기초] 파일 처리  (0) 2017.10.02
Comments