데코레이터로 함수 시그니처 보존
데코레이터는 Python의 강력한 도구이지만 데코레이팅된 함수 시그니처에 문제가 발생할 수도 있습니다. 원래 함수의 서명을 유지하려면 다음 접근 방식을 고려하세요.
접근 방법 1: 데코레이터 모듈
데코레이터 모듈(pip install decorator)을 설치하고 데코레이터를 사용하도록 조정하세요. @ decorator. decorator 구문:
<code class="python">import decorator @decorator.decorator def args_as_ints(f, *args, **kwargs): args = [int(x) for x in args] kwargs = dict((k, int(v)) for k, v in kwargs.items()) return f(*args, **kwargs)</code>
접근 방법 2: functools.wraps() (Python 3.4 )
Python 3.4에서는 functools.wraps()를 도입했습니다. 함수 서명 보존:
<code class="python">import functools def args_as_ints(func): @functools.wraps(func) def wrapper(*args, **kwargs): args = [int(x) for x in args] kwargs = dict((k, int(v)) for k, v in kwargs.items()) return func(*args, **kwargs) return wrapper</code>
두 접근 방식 모두 장식 후 함수 서명을 효과적으로 보존합니다. 또한 이전 Python 버전과의 호환성을 위해 functools.wraps()를 사용할 수 있습니다.
위 내용은 Python 데코레이터로 함수 서명을 보존하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!