functools.wraps 이해
Python 프로그래밍에서 데코레이터는 일반적으로 함수에 기능을 추가하는 데 사용됩니다. 그러나 데코레이터를 사용하면 원래 함수를 새 함수로 대체하여 이름, 독스트링, 인수 목록과 같은 중요한 함수 속성이 손실될 수 있습니다.
여기서 functools.wraps가 작동합니다. 사용자가 데코레이터를 적용할 때 원래 함수의 속성을 유지할 수 있도록 해주는 데코레이터입니다. 기본적으로 데코레이터가 생성한 새 함수를 원래 함수의 속성으로 "래핑"합니다.
다음 예를 고려하세요.
def logged(func): @wraps(func) def with_logging(*args, **kwargs): print(func.__name__ + " was called") return func(*args, **kwargs) return with_logging
이 데코레이터를 사용할 때 다음 사항이 보장됩니다. 함수는 로깅 기능에 의해 수정되었더라도 원래 이름, 독스트링 및 인수 목록을 유지합니다. 작동 방식의 예는 다음과 같습니다.
@logged def f(x): """does some math""" return x + x * x print(f.__name__) # prints 'f' print(f.__doc__) # prints 'does some math'
functools.wraps가 없으면 데코레이터는 원래 함수f를 문서화 문자열이 없고 이름이 다른 새 함수로 대체하여 식별하고 해석하기가 어렵습니다. 함수의 동작.
위 내용은 `functools.wraps`는 Python 데코레이터에서 원래 함수 속성을 어떻게 유지합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!