728x90
[Python] 데코레이터 (decorator)
데코레이터란?
데코레이터 (Decorator)는 파이썬에서 함수나 클래스의 기능을 확장하거나 수정할 수 있게 해주는 기능
데코레이터를 사용하면 기존 코드를 건드리지 않고 함수나 클래스의 동작을 수정할 수 있음
데코레이터 사용 이유
1. 코드의 재사용성과 모듈성을 높임
2. 코드의 가독성을 높일 수 있는 강력한 도구 중 하나
3. 코드의 중복을 줄이고 유지보수성을 높일 수 있음
데코레이터 사용 예제
데코레이터가 필요한 함수 위에 @ + (데코레이터로 사용 할) 함수명으로 선언을 해줌
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
1. 'my_decorator' 함수는 func 인자로 전달 된 함수를 래핑하고, 래핑된 함수를 반환하는 함수
2. 'wrapper' 함수는 래핑된 함수를 실행하기 전과 후에 추가적인 동작을 수행
3. '@my_decorator'는 'say_hello' 함수에 'my_decorator' 함수를 데코레이터로 사용한다는 의미
즉, 'say_hello'는 'my_decorator'함수에 의해 래핑된 함수인 'wrapper' 함수를 호출
'say_hello'를 호출했을 때 결과는 다음과 같음
Something is happening before the function is called.
Hello!
Something is happening after the function is called.
파이썬 웹 프레임워크인 Flask나 Django에서는 데코레이터를 많이 사용하여
웹 애플리케이션에서 로그인 인증, 권한 확인, 캐싱 등의 기능을 쉽게 구현 할 수 있다고 함
반응형
'👩💻 Develope > Python' 카테고리의 다른 글
[Python] Logging 사용법 (0) | 2023.05.08 |
---|---|
[Python] 이터레이터(iterator)와 제너레이터(generator) (0) | 2023.05.04 |
[Pandas] 결측치 제거 & 교체 (0) | 2023.04.21 |
[Pandas] 데이터 프레임의 컬럼을 DB 테이블에 검색하기 (0) | 2023.04.14 |
[Python] 리스트의 요소를 분리하기 (0) | 2023.04.13 |