Python에서 함수 데코레이터 생성 및 연결

Python

데코레이터로 Python 기능 향상

Python에서 데코레이터는 함수나 메서드의 동작을 수정하는 강력한 도구입니다. 이를 통해 개발자는 깔끔하고 읽기 쉬운 방식으로 기존 기능에 추가 기능을 래핑할 수 있습니다. 데코레이터를 만들고 연결하는 방법을 이해하면 코드의 모듈성과 가독성을 크게 향상시킬 수 있습니다.

이 기사에서는 두 가지 특정 데코레이터를 만드는 과정을 안내합니다. 하나는 텍스트를 굵게 표시하고 다른 하나는 텍스트를 기울임꼴로 표시합니다. 또한 원하는 출력을 얻기 위해 이러한 데코레이터를 연결하는 방법도 보여 드리겠습니다. 이 튜토리얼이 끝나면 간단한 함수를 호출하고 굵은 글꼴과 기울임꼴 HTML 태그가 포함된 형식화된 문자열을 받을 수 있습니다.

명령 설명
def Python에서 함수를 정의합니다.
f"<b>{func()}</b>" f-문자열 형식을 사용하여 함수의 반환 값을 굵은 HTML 태그로 묶습니다.
return wrapper 내부 래퍼 함수를 ​​반환하여 효과적으로 데코레이터를 생성합니다.
@make_bold make_bold 데코레이터를 함수에 적용합니다.
@add_html_tag("i") "i" 태그가 있는 add_html_tag 데코레이터를 함수에 적용합니다.
print(say()) say 함수의 결과를 인쇄하고 장식된 출력을 표시합니다.
def add_html_tag(tag) 사용자 정의 가능한 HTML 태그 데코레이터를 생성하기 위한 고차 함수를 정의합니다.
@add_html_tag("b") "b" 태그가 있는 add_html_tag 데코레이터를 함수에 적용합니다.

Python 함수 데코레이터 이해

제공된 스크립트는 Python에서 함수 데코레이터를 생성하고 연결하여 함수의 동작을 수정하는 방법을 보여줍니다. Python의 데코레이터는 다음을 사용하여 정의됩니다. 다른 함수를 인수로 사용하고 새 함수를 반환하는 함수를 만드는 키워드입니다. 그만큼 데코레이터는 f-문자열 형식을 사용하여 HTML 굵은 태그로 장식한 함수의 결과를 래핑합니다. . 마찬가지로, 데코레이터는 결과를 기울임꼴 태그로 묶습니다. . 이러한 데코레이터가 다음을 사용하여 함수에 적용될 때 구문에 따라 해당 HTML 태그를 추가하여 함수의 출력을 수정합니다.

두 번째 스크립트는 고차 함수를 생성하여 보다 다양한 접근 방식을 도입합니다. , 지정된 HTML 태그에 대한 데코레이터를 생성합니다. 이 함수는 HTML 태그를 인수로 사용하고 지정된 태그에서 함수의 출력을 래핑하는 데코레이터를 반환합니다. . 사용하여 그리고 @add_html_tag("i"), 우리는 이러한 데코레이터를 연결하여 볼드체와 이탤릭체 태그 모두에서 작동하여 원하는 "". 이 예제는 깨끗하고 재사용 가능한 방식으로 함수 동작을 향상하고 사용자 정의하는 Python 데코레이터의 강력함과 유연성을 보여줍니다.

Python에서 데코레이터 구현 및 연결

데코레이터 생성 및 연결을 위한 Python 스크립트

def make_bold(func):
    def wrapper():
        return f"<b>{func()}</b>"
    return wrapper

def make_italic(func):
    def wrapper():
        return f"<i>{func()}</i>"
    return wrapper

@make_bold
@make_italic
def say():
    return "Hello"

print(say())

Python 데코레이터를 사용하여 HTML 태그 만들기

함수 수정 및 HTML 태깅을 위한 Python 스크립트

def add_html_tag(tag):
    def decorator(func):
        def wrapper():
            return f"<{tag}>{func()}</{tag}>"
        return wrapper
    return decorator

@add_html_tag("b")
@add_html_tag("i")
def say_hello():
    return "Hello"

print(say_hello())

고급 Python 데코레이터 기술

단순한 함수 수정 외에도 Python 데코레이터는 코드 재사용성과 유지 관리성을 향상시키는 강력한 방법을 제공합니다. 고급 사용 사례 중 하나는 매개변수화된 데코레이터로, 데코레이터가 인수를 허용할 수 있습니다. 이 기술은 그림으로 설명되었습니다. 이전 예제의 데코레이터. 다른 데코레이터를 생성하는 데코레이터를 정의함으로써 매우 유연하고 재사용 가능한 코드 구조를 만들 수 있습니다. 매개변수화된 데코레이터를 사용하면 데코레이터 자체에 매개변수를 전달할 수 있으므로 함수 동작에 대한 동적 및 상황별 수정이 가능합니다.

데코레이터의 또 다른 중요한 측면은 함수 메타데이터를 유지하는 능력입니다. 함수가 데코레이터에 의해 래핑되면 이름 및 독스트링과 같은 해당 메타데이터가 손실될 수 있습니다. 이 메타데이터를 보존하기 위해 Python의 데코레이터 내에서 사용됩니다. 신청함으로써 래퍼 함수에 원래 함수의 메타데이터가 복사되어 문서 생성기와 같이 이 메타데이터에 의존하는 도구가 계속 올바르게 작동하도록 보장합니다. 또한, 다음과 같이 데코레이터를 쌓을 수 있습니다. 그리고 @make_italic 예를 들어, 깨끗하고 읽기 쉬운 방식으로 여러 계층의 동작 수정을 적용합니다.

  1. Python에서 데코레이터란 무엇입니까?
  2. 데코레이터는 일반적으로 재사용 가능한 방식으로 기능을 추가하는 데 사용되는 다른 함수의 동작을 수정하는 함수입니다.
  3. 함수에 데코레이터를 어떻게 적용하나요?
  4. 다음을 사용하여 데코레이터를 적용합니다. 함수 정의 바로 위에 구문이 있습니다.
  5. 단일 함수에 여러 데코레이터를 적용할 수 있나요?
  6. 예, 여러 데코레이터를 함수 위에 쌓을 수 있으며, 각각은 나열된 순서대로 적용됩니다.
  7. 매개변수화된 데코레이터란 무엇입니까?
  8. 매개변수화된 데코레이터는 인수를 취하는 데코레이터로, 보다 동적이고 유연한 수정이 가능합니다.
  9. 데코레이터를 사용할 때 함수의 메타데이터를 어떻게 유지합니까?
  10. 너는 사용한다 데코레이터 내에서 원래 함수의 메타데이터를 래퍼 함수에 복사합니다.
  11. 데코레이터가 왜 유용한가요?
  12. 데코레이터는 기능을 캡슐화하여 코드 재사용, 가독성 및 문제 분리에 유용합니다.
  13. 의 목적은 무엇입니까? 데코레이터의 진술?
  14. 그만큼 문은 내부 함수를 반환하여 데코레이터의 수정 사항을 효과적으로 적용합니다.
  15. 데코레이터를 클래스 메서드에 사용할 수 있나요?
  16. 예, 클래스와 인스턴스 메서드 모두에서 데코레이터를 사용하여 동작을 수정할 수 있습니다.
  17. Python에서 데코레이터를 어떻게 연결합니까?
  18. 데코레이터를 연결하려면 여러 개를 쌓아두세요 함수 정의 위의 명령문.
  19. 데코레이터에서 f-문자열을 사용하는 방법은 무엇입니까?
  20. F-문자열은 데코레이터에서 문자열 형식을 지정하는 데 사용되므로 함수 출력을 HTML 태그와 같은 특정 형식으로 동적으로 삽입할 수 있습니다.

Python의 함수 데코레이터는 함수 동작을 수정하고 향상시키는 강력한 방법을 제공합니다. 데코레이터를 생성, 적용 및 연결하는 방법을 이해하면 코드의 모듈성과 가독성을 크게 향상시킬 수 있습니다. 이 가이드에서는 단순하고 매개변수화된 데코레이터, 함수 메타데이터 보존과 같은 필수 개념을 다루었습니다. , 함수 출력에 HTML 태그를 추가하는 데코레이터의 실제 응용 프로그램. 이러한 기술을 숙지하면 코드가 더욱 동적이고 유지 관리 가능해지며 보다 깨끗하고 효율적인 프로그래밍 방식이 가능해집니다.