Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 구슬탈출2
- BFS: Shortest Reach in a Graph
- 파이썬
- 매칭점수
- 알고리즘
- [sqld]자격증합격
- 격파르타 후기
- hackerrank
- DFS: Connected Cell in a Grid
- candies
- programmers
- Max Array Sum
- Reverse Shuffle Merge
- 코딩테스트
- Recursion: Davis' Staircase
- Common Child
- Interview Preparation Kit
- 격파르타 장점
- Find the nearest clone
- 격파르타 합격후기
- 해커랭크
- 프로그래머스
- python
- Roads and Libraries
- 피보나치 함수
- 머신러닝
- 야근지수
- Algorithm
- Special String Again
- 백준
Archives
- Today
- Total
Archive
[파이썬 기초] 데코레이터 본문
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