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
- hash table
- sorting
- list
- 이진트리
- recursive
- binary search
- Array
- dfs
- Python
- Binary
- DP
- 미디움
- string
- 리트코드
- Depth-first Search
- tree
- 쉬움
- matrix
- two pointers
- 중간
- HashTable
- 재귀
- math
- leetcode
- binary tree
- linked list
- Medium
- easy
- 문자열
- backtracking
Archives
- Today
- Total
부부의 코딩 성장 일기
데코레이터(Decorator) 본문
데코레이터란?
- 파이썬에서 함수나 메소드를 감싸서 (Decorate하여), 특정 동작을 추가하거나 수정하는 기능을 말한다.
- 데코레이터를 사용하게 되면 코드의 재사용성을 높이고, 코드를 간결하게 유지하는 것이 가능하다.
- 데코레이터는 일반적으로 내부에 다른 함수를 정의하고, 그 함수를 반환하는 형태로 구현이 되는데, 이런 구조는 클로저(Closure)라 불리는 개념을 기반으로 한다.
- 아래의 예제를 보면,
- my_decorator라는 데코레이터 함수는 func이라는 인자를 받아, 그 함수를 감싸는 wrapper라는 함수를 정의하고, wrapper함수를 반환하고 있다.
- 이에 wrapper 함수는 클로저로써 외부함수(my_decorator)의 변수에 접근할 수 있다.
- @my_decorator와 같이 표시하면, 실제로는 say_hello 함수가 my_decorator 함수의 인자로 전달되어 내부에서 wrapper함수로 감싸지게 된다.
def my_decorator(func):
def wrapper():
print("데코레이터에서 추가하는 기능")
func()
print("데코레이터에서 추가하는 다른 기능")
return wrapper
@my_decorator
def say_hello():
print("안녕하세요!")
say_hello()
# 데코레이터에서 추가하는 기능
# 안녕하세요!
# 데코레이터에서 추가하는 다른 기능
- 이처럼 데코레이터를 사용하게 되면, 기존 함수의 동작을 확장하거나 수정하는 것이 용이하며, 이는 코드의 가독성과 재사용성을 높여준다. 특히 함수나 메소드에 공통으로 적용되는 기능을 중앙에서 관리할 수 있게 해준다.
'Python > Fundamentals' 카테고리의 다른 글
Python coroutine 코루틴, asyncio 라이브러리 (0) | 2024.03.01 |
---|---|
Python 추상화와 abc 라이브러리 (0) | 2024.02.29 |
Python에서 __init__.py 의 역할 (0) | 2024.02.24 |
얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) (0) | 2024.02.18 |