functools.wraps의 기능 공개
Python 데코레이터 영역 내에서 다음과 같은 질문이 제기됩니다. functools.wraps의 목적은 무엇입니까? ?
이해 데코레이터
데코레이터를 사용하면 기존 기능을 사용자 정의 논리로 래핑하여 기능을 향상시킬 수 있습니다. 그러나 이 래핑 프로세스로 인해 원래 함수와 관련된 메타데이터, 즉 이름, 문서 및 인수 목록이 손실될 수 있습니다.
functools.wraps 소개
여기가 functools.wraps가 작동하는 곳입니다. 메타데이터 손실 문제를 해결하는 데코레이터입니다. @wraps(func)를 데코레이터 함수에 적용하여 데코레이터에게 원래 함수의 메타데이터를 상속하도록 지시합니다.
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): """Computes a mathematical operation.""" return x + x * x
기록된 데코레이터에 @wraps(func)를 적용하여 , 래핑된 함수 f가 원래 이름, 문서 및 인수를 유지하는지 확인합니다. list:
를 인쇄합니다. 결론
functools.wraps가 중요한 역할을 합니다. 데코레이터로 래핑된 함수의 메타데이터를 보존하여 필수 정보가 손실되지 않도록 합니다. @wraps(func)를 사용하면 원래 특성을 손상시키지 않으면서 함수 동작을 효과적으로 향상시키는 유연하고 정보가 풍부한 데코레이터를 만들 수 있습니다.
위 내용은 Python 데코레이터에서 `functools.wraps`는 무엇을 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!