파이썬 데코레이터 질문합니다.
조회수 344회
파이썬 교재를 사서 독학중인데
데코레이터를 이용해 함수 호출 시마다 인자 값과 반환 값을 출력하는 예제에서 막혔습니다.
from functools import wraps
def trace(func):
@wraps(func)
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
print(f'{func.__name__}({args!r}, {kwargs})'
f'-> {result!r}')
return result
return wrapper
@trace
def fibo(n):
if n in (0, 1):
return n
return fibo(n-1) + fibo(n-2)
fibo(4)
교재에서는 wrapper함수가 fibo함수가 실행되기 전과 후에 모두 실행돼서 출력값으로
fibo((0,), {}) -> 0
wrapper((0,), {}) ->0
...
이런 식으로 fibo(4)를 구할때까지 fibo와 wrapper가 한번씩 출력되는데 제 코드로는 fibo만 주루룩 출력됩니다. 계속 검토해봐도 교재와 다르게 입력한 코드는 없는 것 같은데 뭘 잘못했는지 모르겠습니다. wrapper가 fibo 함수가 실행되기 전과 후에 실행된다는 이유와 그 의미도 잘 이해가 안갑니다..
감사합니다
댓글 입력