Python 장식 기 는 어떻게 복구 과정 분석 을 실현 합 니까?
영향 을 주지 않 기 위해 Python 의 functools 패키지 에 wraps 라 는 decorator 를 제공 하여 이러한 부작용 을 제거 합 니 다.decorator 를 쓸 때 는 실현 되 기 전에 funtools 의 wrap 를 추가 하 는 것 이 좋 습 니 다.
그것 은 기 존 함수 의 이름과 docstring 을 유지 할 수 있 습 니 다.
@wraps 를 추가 하지 않 았 을 때:
from functools import wraps
def wrapper(func):
# @wraps(func)
def inner(*args, **kwargs):
print(" ...")
func(*args, **kwargs)
return inner
@wrapper
def f1(arg):
"""
:param arg:
:return:
"""
print(arg)
f1(' ')
print(f1.__name__,f1.__doc__)
인쇄 결 과 는:하지만@wraps 를 더 한 후:
from functools import wraps
def wrapper(func):
@wraps(func)
def inner(*args, **kwargs):
print(" ...")
func(*args, **kwargs)
return inner
@wrapper
def f1(arg):
"""
:param arg:
:return:
"""
print(arg)
f1(' ')
print(f1.__name__,f1.__doc__)
인쇄 결 과 는:그 중에서 중요 한 것 은 두 개의 변수 이다.
1.실행 중인 함수 의 이름 f.name 표시
2.실행 중인 함수 에 대한 설명 f.doc 표시
쉽게 말 하면:
@wraps 를 사용 하지 않 았 다 면 A 가 장식 기 B 를 호출 했 을 때 A.name 이라도 장식 기 B 의 함수 이름 을 되 돌려 줍 니 다.A 의 함수 이름 이 아 닙 니 다.
@wraps 를 사용 하면 A 가 장식 기 B 를 호출 하면 A.name__액세서리 B 의 이름 대신 A 함수 의 이름 을 되 돌려 줍 니 다.
이것 도 흔히 말 하 는@wraps 가 장식 기의 복구 기술 이 라 고 해도,
실제로 A 를 복원 한name__변수,동 리doc__변수 도 마찬가지다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.