오늘은 데코레이터에 대하여 알아보도록 하겠습니다.
1. 데코레이터(decorator)란?
파이썬에서 데코레이터는 기존 함수나 메서드의 기능을 수정하거나 확장하기 위해 사용되는 강력한 기능입니다.
데코레이터는 함수나 메서드를 둘러싸는 형태로 정의되며, 데코레이터를 이용하여 기능을 추가하거나 수정함으로써
코드의 재사용성과 가독성을 높이는데 도움을 줍니다. 데코레이터는 함수형 프로그래밍의 개념과 객체 지향 프로그래밍을 융합하여 파이썬의 강점을 최대한 활용할 수 있게 해줍니다!
2. 데코레이터(decorator)의 구현 방법
데코레이터는 보통 함수로 정의되며 기존 함수를 인자로 받아 그 함수를 수정하고 수정된
함수를 반환하는 구조를 갖습니다.
데코레이터는 ' @decorator_name ' 과 같은 형태로 사용됩니다. 데코레이터를 적용하고자 하는 함수 위에 데코레이터 이름을 적어주면 해당 함수는 데코레이터 함수에 의해 수정됩니다.
- 정의 및 사용 예제
# 데코레이터 함수 정의
def my_decorator(func):
def wrapper(*args, **kwargs):
print("함수 실행 전")
result = func(*args, **kwargs)
print("함수 실행 후")
return result
return wrapper
# 데코레이터 적용
@my_decorator
def my_function():
print("함수 동작 중")
# 함수 호출
my_function()
3. 활용 예제
데코레이터는 함수의 인증, 로깅, 성능 측정 등과 같이 여러 함수에서 공통으로 수행해야 하는 작업을 한곳에서 관리할 수 있게 해줍니다. 이로 인해 중복 코드를 줄이요 유지 보수성과 코드의 가독성을 높일 수 있습니다. 또한 데코레이터를 사용하면 기존 함수를 수정하지 않고 기능 확장을 할 수 있습니다.
# 인증 데코레이터
def authenticated(func):
def wrapper(*args, **kwargs):
if check_authentication():
return func(*args, **kwargs)
else:
raise PermissionError("인증되지 않은 사용자입니다.")
return wrapper
# 로깅 데코레이터
def log_execution(func):
def wrapper(*args, **kwargs):
print(f"{func.__name__} 함수 실행 중")
return func(*args, **kwargs)
return wrapper
# 함수에 데코레이터 적용
@authenticated
@log_execution
def my_function():
print("함수 동작 중")
지금까지 데코레이터에 대하여 알아보았습니다. 데코레이터 예제에서 *args, **kwargs 를 다루는 부분이 있는데 이 부분은 다음글에서 추가로 설명드리도록 하겠습니다.
감사합니다.
파이썬 함수 1편: 파이썬 함수란? Function 이란?
오늘은 파이썬 함수에 대하여 알아보도록 하겠습니다. 함수의 이해와 활용 1. 함수(function)란? 함수란 코드를 논리적인 단위로 나누어 구성하는 것이으로 특정 기능을 수행하는 코드블록입니다.
vipdeveloper.tistory.com
파이썬 함수 2편: 람다(lambda) 함수와 예제들 (map, filter, reduce 포함)
안녕하세요. 오늘 지난 글에 이어 람다 함수와 데코레이터를 알아보도록 하겠습니다. 1. 람다 함수란? 람다 함수는 익명 함수 (anonymous function) 라 불리기도 하는데 이는 이름이 없는 간단한 함수
vipdeveloper.tistory.com
파이썬 함수 3편: 데코레이터(decorator) 정의 및 사용법
오늘은 데코레이터에 대하여 알아보도록 하겠습니다. 1. 데코레이터(decorator)란? 파이썬에서 데코레이터는 기존 함수나 메서드의 기능을 수정하거나 확장하기 위해 사용되는 강력한 기능입니다.
vipdeveloper.tistory.com
파이썬 함수 4편: *args, **kwargs , 가변 인자 처리 방법
오늘은 파이썬 함수에서 가변인자에 대하여 알아보도록 하겠습니다. 1. 가변 인자 처리방법 이란? *args, **kwargs 란? *args 와 **kwargs는 파이썬에서 가변인자를 처리하는 방법입니다. 이 방법의 이점
vipdeveloper.tistory.com
'파이썬(python) 기본' 카테고리의 다른 글
파이썬 객체 지향 프로그래밍: 클래스(Class) 생성자와 인스턴스 변수 (0) | 2023.07.28 |
---|---|
파이썬 함수 4편: *args, **kwargs , 가변 인자 처리 방법 (0) | 2023.07.25 |
파이썬 함수 2편: 람다(lambda) 함수와 예제들 (map, filter, reduce 포함) (0) | 2023.07.25 |
파이썬 함수 1편: 파이썬 함수란? Function 이란? (0) | 2023.07.25 |
파이썬 자료구조: 딕셔너리(Dictionary) 이해하기, key - value 데이터 구조 (0) | 2023.07.21 |