> 백엔드 개발 > 파이썬 튜토리얼 > 예제와 함께 파이썬 데코레이터 이해

예제와 함께 파이썬 데코레이터 이해

Lisa Kudrow
풀어 주다: 2025-02-19 09:51:10
원래의
241명이 탐색했습니다.

Understanding Python Decorators, with Examples 이 기사는 파이썬 프로그래밍에서 데코레이터의 개념과 가장 잘 사용하는 방법을 이해하는 데 도움이됩니다. 우리는 파이썬 데코레이터가 무엇인지, 구문의 모습, 스크립트 나 프레임 워크에서이를 인식하는 방법, 그리고 직접 적용하는 방법을 다룰 것입니다.

파이썬의 기능 데코레이터는 다른 기능을 인수로 취하는 기능 일뿐 아니라 구조를 변경하지 않고 장식 된 기능의 기능을 확장하는 함수 일뿐입니다. 데코레이터는 다른 기능을 감싸고 동작을 향상시킨 다음 반환합니다.

파이썬의 데코레이터 개념은 코드를 건조하게 유지하는 데 도움이됩니다 (반복하지 마십시오). 기능 데코레이터는 일부 중복 코드 스 니펫을 결합하여 기능 데코레이터를 형성 할 수 있기 때문에 코드베이스의 불필요한 복제를 피합니다. 파이썬으로 개발을 발전함에 따라 데코레이터는 분석 및 문서화를 도울 수 있습니다. 또한 확인 및 런타임 확인을 설정하는 데 중요합니다.

다음에서, 나는 당신이 파이썬 기능과 프로그래밍에 대한 기본적인 이해가 있다고 가정하며, 기기에 최소한 Python 3.8이 설치되어 있다고 가정합니다.

키 포인트

파이썬 데코레이터는 다른 기능을 인수로 취하는 기능으로, 구조를 변경하지 않고 기능을 향상시킵니다. 불필요한 복제를 피함으로써 코드 건조를 유지하는 데 도움이되며 분석, 로깅, 검증 및 런타임 점검에 사용될 수 있습니다.

파이썬에서, 데코레이터 함수는 기능 매개 변수를 수신하는 외부 함수와 외부 함수 내에 장식 함수를 감싸는 중첩 된 함수에 의해 정의됩니다. 데코레이터는 데코레이터 기능 이전의 "@"접두사로 쉽게 식별 할 수 있습니다. 매개 변수는 래퍼 함수와 장식 된 기능으로 전달 될 수 있습니다.

데코레이터는 파이썬으로 묶을 수 있으며, 이는 기능을 여러 데코레이터로 장식 할 수 있음을 의미합니다. 이것은 하나의 데코레이터를 다른 데코레이터 위에 쌓아서 수행됩니다. 파이썬 데코레이터의 실제 사용 사례에는 시간 기록, 메모리 및 @classmethod, @staticMethod 및 @property와 같은 내장 된 파이썬 데코레이터가 포함됩니다.

파이썬 데코레이터를 탐구하기 전에 알아야 할 것들

파이썬에서 기능은 일류 시민이므로 매개 변수를 받거나 매개 변수로 전달 될 수 있습니다. 데코레이터의 개념을 완전히 파악하려면 다음 사항을 알아야합니다.
    함수는 객체이므로 다른 변수 에 할당 할 수 있습니다. 항상 파이썬에서 모든 것이 물체라는 것을 기억하십시오. 변수에 값을 할당하는 것과 마찬가지로 필요한 경우 함수를 변수에 할당 할 수도 있습니다. 데코레이터에 대해 배울 때 중요합니다.
  • 함수는 다른 함수에서
  • 를 반환 할 수 있습니다
  • 파이썬의 내부 함수는 외부 함수에서 반환 할 수 있습니다. 이것은 당신이 겪을 기능 프로그래밍 개념의 일부입니다.
  • 함수는 다른 함수의 매개 변수로 전달 될 수 있습니다
함수 매개 변수를 수신하는 함수를 고차 함수라고합니다.

데코레이터를 구현하고 파이썬 프로그램에서 효과적으로 사용하는 법을 배울 때 위의 포인트를 명심하십시오.

파이썬 데코레이터 작동 메커니즘

간단한 데코레이터 함수는 기능 정의, 데코레이터 기능 및 외부 래퍼 함수 내에서 중첩 된 기능으로 시작합니다.

데코레이터를 정의 할 때 항상 다음 두 지점을 명심하십시오. 데코레이터를 구현하려면 함수 매개 변수를 수신하는 외부 함수를 정의하십시오. 외부 데코레이터 함수에서 래퍼 함수를 ​​중첩하고 데코레이터 기능을 감습니다.

다음은 다음 코드 스 니펫에서 가장 기본적인 데코레이터 기능이 보이는 것입니다.

위의 코드를보고 외부 함수 (데코레이터라고도 함)는 함수 매개 변수 를 수신합니다. 는 장식 된 함수를 포함하는 래퍼 함수입니다. 데코레이터는 다른 변수에 할당됩니다. 이것은 파이썬 데코레이터를 사용할 때 데코레이터 구문이 의미하는 바입니다. 그러나 데코레이터를 표현하는 더 쉬운 방법이 있습니다.

@ prefix로 시작하고 그 아래의 장식 기능을 결합 할 때 간단한 데코레이터 기능을 쉽게 인식 할 수 있습니다. 이전 예제는 다음과 같이 리팩토링 될 수 있습니다
    이 예제는 데코레이터가 함수 매개 변수의 기능을 확장 함을 보여줍니다.
  1. 매개 변수가있는 데코레이터 함수
  2. 경우에 따라 매개 변수를 데코레이터로 전달해야 할 수도 있습니다. 이 문제에 대한 해결책은 인수를 래퍼 함수에 전달한 다음 장식 된 기능으로 전달하는 것입니다. 다음 예를 참조하십시오.
매개 변수를 내부 또는 중첩 함수로 전달하면 장식 된 기능을 조작 할 수있는 유연성을 제공하기 때문에 더욱 강력하고 강력합니다. 모든 매개 변수 (*args) 또는 키워드 매개 변수 (** kwargs)를 장식 된 기능으로 전달할 수 있습니다. *Args는 모든 위치 매개 변수를 수집 할 수있는 반면 ** kwargs는 함수 호출 중에 필요한 모든 키워드 매개 변수에 사용됩니다. 또 다른 간단한 예를 살펴 보겠습니다 :

위의 예에서 *Args는 위치 매개 변수를 튜플로 가져 가서 반복 가능한 물체를 형성하는 반면 ** kwargs는 키워드 매개 변수 사전을 형성합니다.
def greet():
    print("Hello John")

greet_john = greet
greet_john()
>>>
Hello John
로그인 후 복사

Python increase_number 의 다중 데코레이터 또는 체인 호출 파이썬 프로젝트에서 기능 데코레이터를 사용할 때는 탐색 할 몇 가지 옵션이 있습니다. 또 다른 사용 사례는 데코레이터 (둘 이상의)를 함수에 연결하는 것입니다. 기능은 여러 데코레이터 (다중 데코레이터)로 장식 할 수 있으며, 하나의 데코레이터를 다른 데코레이터 위에 쌓아서 관련이 없습니다. 여러 데코레이터가 쌓인 순서에 관계없이 다음 예제와 동일한 출력을 얻게됩니다. func increase_by_one 파이썬 데코레이터의 실제 사용 사례 get_number 파이썬에서 데코레이터를 사용하는 매우 인기있는 방법은 Time Logger입니다. 이를 통해 프로그래머는 효율성을 측정하기 위해 기능을 실행하는 데 걸리는 시간을 이해하는 데 도움이됩니다.

암기는 파이썬에서 데코레이터를 사용하는 또 다른 멋진 방법입니다. 계산이 나중에 수행되면, 기능에 대한 반복 호출의 결과는 변경없이 쉽게 기억할 수 있습니다. 데코레이터를 사용하여 기능을 암기 할 수 있습니다.

@classmethod, @staticmethod 및 @property와 같은 내장 된 Python 장식자는 Python의 OOP 데코레이터 모드에서 매우 인기가 있습니다.

결론

파이썬 데코레이터는 재사용 가능한 코드로 사용되기 때문에 소프트웨어 엔지니어링의 건조 원칙을 시행합니다. 데코레이터에 리팩터를 리팩터 할 수있는 파이썬 기능의 수를 생각해보십시오. 이 기사에서는 다양한 형태의 데코레이터를 탐색합니다. 우리는 여기서는 여기에 커버하지 않지만 수업 데코레이터도 있습니다.

데코레이터를 사용하면 코드를 건조한 상태로 유지하면서 소스 코드를 변경하지 않고 간단한 기능, 메소드 또는 클래스에 추가 기능을 더 쉽게 추가 할 수 있습니다. 데코레이터 패턴을 더 잘 이해하기 위해 기능을 직접 장식하십시오. JavaScript Decorators에 대한 FAQS

JavaScript 데코레이터 란 무엇입니까?

JavaScript Decorator는 ECMAScript 2016 (ES6) 및 이후의 JavaScript 버전에 도입 된 디자인 패턴이며 기능입니다. 이를 통해 주석 또는 메타 데이터를 적용하여 함수, 메소드 또는 클래스의 동작을 수정하거나 향상시킬 수 있습니다. 데코레이터는 일반적으로 Angular 및 Mobx와 같은 다양한 JavaScript 라이브러리 및 프레임 워크에서 사용됩니다. 데코레이터는 일반적으로 객관적인 기능 또는 클래스를 감싸거나 "장식하는"기능으로 구현됩니다. 핵심 코드를 변경하지 않고 기능을 추가하거나 대상의 동작을 변경하는 데 사용됩니다. 데코레이터는 함수, 메소드 또는 클래스에 적용될 수 있으며 @ 기호로 표시된 다음 데코레이터 이름으로 표시됩니다.

왜 우리는 JavaScript 데코레이터가 필요합니까?

JavaScript의 데코레이터는 다음과 같은 이유로 언어에 귀중한 추가 사항입니다. 개발자가 기능 및 방법의 핵심 논리와 교차 절단 문제를 분리 할 수있게함으로써 모듈성 및 코드 재사용 성을 촉진합니다. 이는 혼란을 줄이고 가독성을 향상시켜 코드를 더 쉽게 유지하고 이해할 수 있도록함으로써 더 깨끗한 코드 기반을 촉진합니다. 데코레이터는 보안, 로깅 및 핵심 애플리케이션 로직에서 구성과 같은 측면을 분리 할 수 ​​있으므로 우려 분리 원칙을 준수하는 데 중요한 역할을합니다. 데코레이터는 특정 동작이나 정책이 기능 및 방법에 일관되게 적용되도록하여 코드 기반에 일관성을 제공합니다. 함수의 동작을 구성하고 사용자 정의하는 유연한 방법을 제공하여 핵심 코드를 수정하지 않고 쉽게 변경하거나 기능을 확장 할 수 있습니다. AOP (Aspect-Oriented Programming)를 지원함으로써 Decorators는 크로스 절단 문제를 체계적으로 해결하여 더 깨끗하고 조직화 된 코드를 만듭니다. 데코레이터는 또한 타사 라이브러리와 프레임 워크에 의해 점점 더 채택되어 현대 자바 스크립트 도구를 효율적으로 사용하기위한 필수 기술이됩니다. 대체로 데코레이터는 코드 조직, 가독성, 유지 관리 및 확장 성을 향상시켜 JavaScript 개발자에게 귀중한 자산을 제공합니다.

파이썬 데코레이터와 자바 스크립트 데코레이터의 차이점은 무엇입니까?

Python 및 JavaScript 데코레이터는 함수 또는 메소드 동작을 수정하는 개념을 공유하지만 구문 및 사용량은 다릅니다. Python은 @decorator_function 구문을 사용하며 다양한 목적으로 함수 및 클래스에 적용 할 수 있습니다. JavaScript Decorator는 @decorator 구문을 사용하며 주로 클래스, 메소드 및 속성에 사용됩니다. 파이썬 데코레이터는 더 다재다능하지만 JavaScript 데코레이터는 클래스 중심이며 ECMAScript 2016의 일부로 소개되었습니다.

출력은 원래 이미지 형식을 유지하고 입력 텍스트의 핵심 의미를 변경하지 않습니다.

위 내용은 예제와 함께 파이썬 데코레이터 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿