파이썬 데코레이터(Decorators)는 함수나 클래스의 기능을 확장하거나 수정할 수 있는 강력한 기능입니다. 데코레이터는 함수나 클래스를 매개변수로 받고, 그것을 감싸는(Wrap) 기능을 수행하는 함수입니다. 데코레이터는 기존 코드를 수정하지 않고도 새로운 기능을 추가하거나 조작할 수 있게 해줍니다.
데코레이터는 주로 함수를 감싸는 용도로 사용됩니다. 데코레이터 함수는 주로 "@데코레이터_함수"와 같은 문법으로 함수 위에 표기됩니다. 데코레이터 함수로 감싸는 것만으로도 해당 함수가 추가적인 작업을 수행하게 됩니다.
아래는 간단한 파이썬 데코레이터 코드 예제입니다.
```python
def logger(func):
def wrapper(*args, **kwargs):
print("함수가 호출되었습니다: {}".format(func.__name__))
return func(*args, **kwargs)
return wrapper
@logger
def add(a, b):
return a + b
result = add(3, 5)
print(result)
```
이 예제에서 `logger` 함수는 데코레이터 함수로 정의되었습니다. `wrapper` 함수는 감싸지는 함수의 앞뒤에 print문을 추가하는 역할을 합니다. `add` 함수 위에 `@logger` 문법을 사용하여 `add` 함수가 `logger` 함수로 데코레이션되었습니다. 그리고 `add` 함수를 호출하면, 데코레이터 함수 내부에서 추가적인 작업이 수행됩니다.
실행 결과:
```
함수가 호출되었습니다: add
8
```
위 예제에서 `add` 함수가 호출되면, 먼저 `logger` 함수 내에서 "함수가 호출되었습니다: add"라는 출력문이 나타납니다. 그리고 `add` 함수는 정상적으로 결과를 반환합니다.
이러한 방식으로 데코레이터를 사용하면, 기존 함수의 기능을 수정하지 않고도 새로운 기능을 간편하게 추가하거나 조작할 수 있습니다. 데코레이터는 코드 재사용성과 가독성을 높일 수 있는 강력한 도구입니다.
더 자세한 내용은 파이썬 공식 문서의 데코레이터에 대한 설명을 참고하시기 바랍니다.
링크: https://docs.python.org/ko/3/glossary.html#term-decorator
댓글