티스토리 뷰
Closure (클로저)
내부 함수가 외부 함수의 변수를 참조할 수 있는 특성
내부 함수가 외부 함수의 지역 변수를 기억하고 사용할 수 있다.
def outer():
x = 10 # 외부 함수의 변수
def inner():
print(x) # 내부 함수에서 외부 함수의 변수에 접근
return inner # 내부 함수 반환
# 내부 함수인 inner 반환
closure = outer()
# inner() 가 실행
# x = 10은 outer 함수에서 정의됐지만, 내부 함수인 inner 함수에서도 접근 가능
# 10 출력
closure()
Decorator (데코레이터)
함수를 인자로 받아서 새로운 함수로 반환하면서, 기존 함수를 수정하거나 확장하는 방법
클로저를 활용하여 구현됨
- 기존 함수의 코드를 직접 수정하지 않고 새로운 기능 추가 가능 (함수의 시간 측정 기능)
- @를 사용하여 함수 정의 위에 적용
- 함수를 인수로 받아서 새로운 함수를 반환하는 형태
import time
def timer(func): # func 매개변수를 통해 함수를 받아옴
def wrapper(*args, **kwargs):
start = time.time()
"""
func -> slow_function이 들어간다.
*args, **kwargs를 이용하여 원래 함수의 인자를 동적으로 받을수 있다.
"""
result = func(*args, **kwargs)
end = time.time()
print(f"실행 시간: {end - start:.4f}초")
return result
return wrapper
@timer # @를 통해 데코레이터 사용할 것을 표기
def slow_function():
time.sleep(2)
print("작업 완료")
slow_function()
functools.wraps
데코레이터 사용 시, 원래 함수의 이름과 설명이 사라지기 때문에 원본 함수의 이름, 설명, 속성을 유지하기 위해서 사용
import functools
def decorator(func):
@functools.wraps(func) # 원래 함수 정보를 유지
def wrapper():
""" 이것은 래퍼 함수입니다. """
return func()
return wrapper
@decorator
def say_hello():
"""이 함수는 인사를 합니다. """
print("안녕하세요!")
print(say_hello.__name__) # say_hello
print(say_hello.__doc__) # "이 함수는 인사를 합니다."
'개발용 정리' 카테고리의 다른 글
[Vue.js] 디렉티브(Directives) (0) | 2025.08.22 |
---|---|
[DBMS] 데이터 join 이해하기 (7) | 2025.08.06 |
[JavaScript] 호이스팅 (2) | 2025.07.28 |
[JavaScript] 변수 선언 var, let, const 정리 (4) | 2025.07.24 |
[CSS] 선택자 (0) | 2025.07.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- python
- 베르누이분포
- KL_Divergence
- LLM
- iclr
- NAACL21
- GCN
- #브루트포스
- LeetCode
- emnlp2024
- #BOJ #유클리드호제법
- #BOJ #그리디알고리즘
- directives
- 파이토치
- 조건부확률
- llm agent
- PyTorch
- Rag
- two-pointers
- CoT
- #BOJ #2467번 #투포인터알고리즘
- #BOJ #알고리즘 #1034번
- DECI
- sliding window
- 인과관계추론
- javascript
- #information_retrieval
- emnlp
- #BOJ
- #1405번
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함