함수 데코레이터를 만들고 함께 연결하는 방법
소개
Python의 데코레이터는 다음을 허용합니다. 함수 자체를 수정하지 않고 함수의 동작을 수정할 수 있습니다. 데코레이터를 사용하면 함수 호출 전후에 기능 추가, 입출력 확인, 기타 작업을 수행할 수 있습니다.
데코레이터 만들기
데코레이터를 만들려면 , 다른 함수를 인수로 취하는 함수를 정의합니다. 이 함수는 원래 함수를 래핑하는 새 함수를 반환해야 합니다.
def make_bold(fn): # The new function the decorator returns def wrapper(): # Insertion of some code before and after return "<b>" + fn() + "</b>" return wrapper
데코레이터 연결
데코레이터를 연결하여 함수에 여러 수정 사항을 적용할 수 있습니다. 아래와 같이 각 데코레이터를 차례로 적용하기만 하면 됩니다.
@make_bold @make_italic def say(): return "hello"
이 코드는 make_bold 데코레이터를 make_italic 데코레이터에 적용하고, 이는 차례로 say 함수에 적용됩니다. 결과적으로 say 함수는 굵은 이탤릭체로 표시된 문자열을 반환합니다.
예: 텍스트 형식을 지정하는 체인 데코레이터
텍스트 문자열. 텍스트에 굵게 및 기울임꼴 서식을 추가하려고 합니다. 이를 달성하기 위해 위에 정의된 데코레이터를 사용할 수 있습니다.
@make_bold @make_italic def formatted_text(text): return text print(formatted_text("Hello world"))
출력:
<b><i>Hello world</i></b>
데코레이터에 인수 전달
인수를 다음으로 묶어 데코레이터에 인수를 전달할 수 있습니다. 괄호:
def a_decorator_passing_arguments(function_to_decorate): def a_wrapper_accepting_arguments(arg1, arg2): print("I got args! Look: {0}, {1}".format(arg1, arg2)) function_to_decorate(arg1, arg2) return a_wrapper_accepting_arguments @a_decorator_passing_arguments def print_full_name(first_name, last_name): print("My name is {0} {1}".format(first_name, last_name)) print_full_name("Peter", "Venkman")
출력:
I got args! Look: Peter, Venkman My name is Peter Venkman
결론
데코레이터를 생성하고 연결하는 방법을 이해함으로써, Python 함수의 기능을 확장할 수 있습니다. 이 강력한 기술을 사용하면 모듈식 및 재사용 가능한 방식으로 동작을 수정하고, 검사를 수행하고, 코드를 향상할 수 있습니다.
위 내용은 Python에서 함수 데코레이터를 만들고 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!