>백엔드 개발 >파이썬 튜토리얼 >장식된 함수의 서명을 보존하는 방법

장식된 함수의 서명을 보존하는 방법

Barbara Streisand
Barbara Streisand원래의
2024-10-17 16:59:02912검색

How to Preserve Signatures of Decorated Functions

장식된 함수의 서명 보존

유형 변환, 로깅 또는 메모와 같이 함수의 인수를 변경하는 일반 데코레이터로 함수를 장식할 때 문제가 발생합니다. 데코레이팅된 함수는 원래 함수의 문서와 서명을 상속하지 못하여 동작을 이해하기 어렵습니다.

이 문제를 해결하기 위해 여러 가지 해결 방법이 제안되었습니다.

방법 1: ' 데코레이터' 모듈

pip를 사용하여 '데코레이터' 모듈을 설치하고 decorator. decorator 주석을 포함하도록 데코레이터 정의를 수정합니다. 이렇게 하면 함수 시그니처를 유지하면서 데코레이터가 일반 상태로 유지됩니다.

<code class="python">import decorator

@decorator.decorator
def args_as_ints(f, *args, **kwargs):
    # Perform argument conversion
    return f(*args, **kwargs)</code>

방법 2: 'functools.wraps()' 사용

Python 3.4 이상의 경우 'functools.wraps( )'은 함수의 서명과 문서를 모두 자동으로 보존하는 대체 솔루션을 제공합니다.

<code class="python">import functools

def args_as_ints(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        # Perform argument conversion
        return func(*args, **kwargs)
    return wrapper</code>

결론

두 방법 모두 원래 함수의 서명과 문서를 효과적으로 보존합니다. '데코레이터' 모듈은 Python 2 및 3에 적합한 반면, 'functools.wraps()'는 Python 3.4 이상에서만 사용할 수 있습니다.

위 내용은 장식된 함수의 서명을 보존하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.