호출 로깅용 데코레이터를 만들어서 함수에 씌웠는데, 그 뒤로 함수 이름과 설명(docstring)이 원래 것과 달라졌어요.


def log_calls(func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs)
return wrapper

@log_calls
def fetch_data():
"""데이터 가져오기"""

print(fetch_data.__name__)
print(fetch_data.__doc__)


wrapper
None


fetch_data.__name__이 "fetch_data"가 아니라 "wrapper"로 나오고 docstring도 사라졌어요. 로깅이랑 문서 자동화가 다 깨지는데, 이거 functools.wraps로 해결한다는 게 정확히 뭘 해주는 건가요?