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
- 첫번째로 나오는 음수
- 무작위로 k개의 수 뽑기
- 월부닷컴
- 풀스택gpt
- 특정 문자열로 끝나는 가장 긴 문자열 찾기
- 클린코드
- 프로그래머스 코딩테스트 기초
- 기초
- 파이썬
- 배열 만들기6
- 프로그래머스
- 특별한 이차원 배열 1
- Python
- 개발자북클럽
- 월부
- 프로그래머스 기초
- 주사위 게임1
- 노개북
- 부동산강의
- 월급쟁이부자들
- 열기반
- 0 떼기
- 세 개의 구분자
- 배열 만들기3
- 열반스쿨기초반
- l로 만들기
- 노마드코더
- 문자열이 몇 번 등장하는지 세기
- 코딩테스트
- 프로그래머스 입문
Archives
- Today
- Total
해쟈스토리
데코레이터 본문
728x90
반응형
파이썬에서 함수앞에 데코레이터를 붙여 사용하는 문법으로 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용한다. 예를 들어 함수의 시작와 끝을 출력하거나 함수의 수행에 걸리는 시간을 출력하고 싶을 때 사용할 수 있다.
def callCount(func):
cnt = 0
def inner(*args, **kwargs):
nonlocal cnt
cnt += 1
result = func(*args, **kwargs)
print(f"{func.__name__}함수 실행 {cnt}회")
return inner
@callCount
def test():
pass
@callCount
def test1():
pass
위와 같이 callCount라는 데코레이터를 만들어 붙여주면 어떤 함수든 함수명과 실행횟수를 출력해준다.
test()를 실행하면 test함수 실행 1회가 출력된다.
데코레이터는 여러개 지정할 수 있다. 함수 위에 데코레이터를 여러줄로 지정해 줄 수 있다. 이때 데코레이터가 실행되는 순서는 위에서 아래순이다.
@데코레이터1
@데코레이터2
def 함수이름():
코드
@형태로 사용하지 않으면 아래와 같이 사용할 수 있다. 위에서는 @callCount로 데코레이터를 사용했으나 아래와 같이
t = callCount(test)
t()
데코레이터는 함수에만 국한되지 않는다. 클래스에서도 사용이 가능하다.
class dbhandler_decorator(contextlib.ContextDecorator):
def __enter__(self):
stop_database()
return self
def __exit__(self, ext_type, ex_value, ex_traceback):
start_database()
@dbhandler_decorator()
def offline_backup():
run("pg_dump database")728x90
반응형
'파이썬 > 문법' 카테고리의 다른 글
| iterable 객체 (0) | 2024.06.18 |
|---|